एक्स-पावर्ड-बाय को हटाना


137
  1. मैं PHP में X-Powered-by-header कैसे निकाल सकता हूँ? मैं एक अपाचे सर्वर पर हूं और मैं php 5.21 का उपयोग करता हूं। मैं php में शीर्षलेख_ कार्य को उपयोग नहीं कर सकता क्योंकि यह 5.21 द्वारा समर्थित नहीं है। मैंने हेडर अनसेट-एक्स-पावर्ड-बाय का उपयोग किया, यह मेरे स्थानीय मशीन पर काम करता था, लेकिन मेरे उत्पादन सर्वर पर नहीं।

  2. यदि php शीर्ष लेख के लिए शीर्ष लेख_remove () का समर्थन नहीं करता है तो 5.3, क्या कोई विकल्प है?


उत्पादन पर PHP संस्करण: स्थानीय पर PHP / 5.2.13 PHP संस्करण: PHP / 5.2 उत्पादन पर अपाचे संस्करण: Apache / 2.2.15 (Unix) स्थानीय पर Apache संस्करण: Apache 2.0.63 (मैक पर MAMP का उपयोग करके)
केस्टर

इसके अलावा ईस्टर अंडे के लिए बाहर देखो ।
पचेरियर

जवाबों:


236

मुझे लगता है कि PHP.iniexpose_php में सेटिंग द्वारा नियंत्रित किया जाता है :

expose_php = off

निर्णय करता है कि क्या PHP इस तथ्य को उजागर कर सकता है कि यह सर्वर पर स्थापित है (जैसे वेब सर्वर हेडर में अपने हस्ताक्षर जोड़कर)। यह किसी भी तरह से कोई सुरक्षा खतरा नहीं है, लेकिन यह निर्धारित करना संभव बनाता है कि आप अपने सर्वर पर PHP का उपयोग करते हैं या नहीं।

कोई प्रत्यक्ष सुरक्षा जोखिम नहीं है, लेकिन डेविड सी नोटों के रूप में, PHP के एक पुराने (और संभवतः कमजोर) संस्करण को उजागर करना लोगों के लिए एक प्रयास करने और उस पर हमला करने का निमंत्रण हो सकता है।


30
'यह किसी भी तरह से कोई सुरक्षा खतरा नहीं है।' यह होस्ट सर्वर पर चल रहे php के पुराने संस्करणों के लिए असत्य हो सकता है। मैंने सुना है कि हैकर्स पिछले संस्करणों में अच्छी तरह से प्रलेखित 'छेद' का फायदा उठा सकते हैं। इस तथ्य को छिपाना बेहतर है ....
डेविड

14
"पूरी तरह से अप-टू-डेट" होना एक गलत सकारात्मक imo है। जानकारी को पूरी तरह से अक्षम करना बेहतर है। यह संभव है कि कल जारी एक संस्करण में पहले से ही एक उजागर खतरा हो सकता है, और यह निर्भर करता है कि आपका उन्नयन चक्र कितना आक्रामक है, कुछ समय के लिए ऐसा हो सकता है। उन्हें पूरी तरह से अनुमान लगाने के लिए बेहतर है। मैं उतना ही छिपाता हूं जितना कि मैं nginx संस्करणों को भी शामिल कर सकता हूं।
माइक पर्सल

1
@ डेविड, उसका क्या मतलब है, यह उस सुरक्षा खतरे को नहीं जोड़ता है जो आप पहले से ही सामना कर रहे हैं।
पचेरियर

7
आप एक्स-पावर्ड-बाय हैडर के लिए उद्देश्यपूर्ण तरीके से खराब मूल्य की रिपोर्ट कर सकते हैं और करना चाहिए। उदाहरण के लिए यदि आप PHP चला रहे हैं, तो आप अपने वेब सर्वर पर सॉफ्टवेयर कॉन्फ़िगरेशन ID'ing से हमलावरों को धीमा करने के तरीके के रूप में एक एक्स-पावर्ड-बाय: ASP.NET हेडर भेज सकते हैं। अपने स्कैन को धीमा करने के लिए एक जंगली हंस का पीछा करते हुए अपने हमलावरों को भेजें।
चाओिक्स

3
@ स्पेसर, निश्चित रूप से यह सुरक्षा खतरे को जोड़ता है। हैकर आसान शिकार की तलाश में 1000 साइटों को स्कैन करता है ... इस हैडर के होने पर पुराने संस्करण का मतलब है कि सर्वर अब लक्षित हो जाता है जब पहले नजरअंदाज कर दिया जाता था। यह प्रत्यक्ष रूप से सुरक्षा खतरे को जोड़ता है। यहां तक ​​कि आज तक, यह उस समय की संक्षिप्त विंडो में खतरे को जोड़ सकता है जहां एक अपडेट है जो अभी तक लागू नहीं किया गया है।
निगेल बी। पेक


50

यदि आप PHP की बातूनी को मिटाने के लिए expose_php निर्देश को अक्षम नहीं कर सकते हैं ( php.ini तक पहुंच की आवश्यकता है ), तो आप शीर्ष लेख फ़ील्ड को निकालने के लिए अपाचे के Headerनिर्देश का उपयोग कर सकते हैं :

Header unset X-Powered-By

3
यह मेरे प्रोडक्शन सर्वर पर काम नहीं कर रहा है। हालांकि यह मेरे स्थानीय मशीन पर काम कर रहा है। यह क्यों हो रहा है के रूप में कोई विचार?
कास्टर

@Castor आप स्थानीय स्तर पर और उत्पादन मशीन पर किस सर्वर संस्करण का उपयोग कर रहे हैं? PHP सेटअप में कोई अंतर?
पेकका

उत्पादन पर PHP संस्करण: स्थानीय पर PHP / 5.2.13 PHP संस्करण: PHP / 5.2 उत्पादन पर अपाचे संस्करण: Apache / 2.2.15 (Unix) स्थानीय पर Apache संस्करण: Apache 2.0.63 (मैक पर MAMP का उपयोग करके)
केस्टर

1
@ कैस्टर: क्या mod_headers दोनों सर्वरों पर उपलब्ध है? और क्या आपको FileInfo ( httpd.apache.org/docs/2.2/mod/core.html#allowoverride ) को ओवरराइड करने की अनुमति है ?
गम्बू

@ Gumbo हाँ, mod_headers दोनों सर्वरों पर उपलब्ध है। और हां, मुझे FileInfo को ओवरराइड करने की अनुमति है।
Castor

24
if (function_exists('header_remove')) {
    header_remove('X-Powered-By'); // PHP 5.3+
} else {
    @ini_set('expose_php', 'off');
}

14

यदि आपके पास php.ini तक पहुंच है, तो सेट करें expose_php = Off


3
खैर, मुझे यह काम php कोड से मिला। हेडर ("एक्स-पावर्ड-बाय:"); बिना कुछ निकाले X-Powered-by हैडर को सेट करना। आपके समय और सुझावों के लिए सभी का धन्यवाद।
कैस्टर


4

हेडर भेजने से पहले हेडर () कॉल जोड़ने का प्रयास करें, जैसे:

header('X-Powered-By: Our company\'s development team');

php.ini में expose_php सेटिंग की परवाह किए बिना


0

यह समाधान मेरे लिए काम किया :)

कृपया स्क्रिप्ट में नीचे पंक्ति जोड़ें और जाँच करें।

Ngnix / Apache आदि स्तर सेटिंग्स की आवश्यकता नहीं हो सकती है।

header("Server:");
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.