Defaults.Exposed › सुधार › MIME-स्निफिंग सुरक्षा (X-Content-Type-Options)
MIME-स्निफिंग सुरक्षा (X-Content-Type-Options) को कैसे ठीक करें
एक एक-पंक्ति हेडर जो ब्राउज़रों को अनुमान लगाने से रोकता है कि एक फ़ाइल वास्तव में क्या है। इसके बिना, कोई फ़ाइल जो कोई आपकी साइट पर अपलोड करता है — या आपके अपने पेजों पर एक फ़ाइल — ब्राउज़र द्वारा गलत पढ़ी जा सकती है और कोड के रूप में चलाई जा सकती है, जो ठीक वही है जिस तरह कुछ हमले एक हानिरहित दिखने वाले अपलोड को आपके ग्राहकों के सेशन चुराने के तरीके में बदल देते हैं।
आपके व्यवसाय के लिए मुख्य बात: इस हेडर को छोड़ना एक स्पष्ट, स्कैन करने योग्य संकेत है कि बुनियादी बातें लॉक डाउन नहीं हैं। अपने आप में यह शायद ही कभी किसी साइट को नीचे लाता है, लेकिन एक फ़ाइल-अपलोड फ़ॉर्म या उपयोगकर्ता-उत्पन्न सामग्री के साथ संयुक्त यह एक हमलावर के लिए आपके विज़िटरों के ब्राउज़रों में दुर्भावनापूर्ण कोड चलाने का एक रास्ता खोलता है। यह सुरक्षा में सबसे सस्ते सुधारों में से एक है: एक पंक्ति, मुफ्त, लगभग पाँच मिनट।
यह आपको क्या खर्च कर सकता है
- कोई भी पेज जहाँ ग्राहक या स्टाफ फ़ाइलें अपलोड कर सकते हैं (अवतार, दस्तावेज, सहायता अटैचमेंट, लिस्टिंग फ़ोटो) ब्राउज़र-साइड हमलों के लिए एक संभावित लॉन्च-पैड बन जाता है।
- एक हमलावर दुर्भावनापूर्ण कोड को एक छवि या टेक्स्ट फ़ाइल के रूप में छिपा सकता है और विज़िटर के ब्राउज़र को इसे चलाने के लिए उपयोग कर सकता है — आपकी साइट पर उनके लॉग-इन सेशन को चुराते हुए।
- सुरक्षा प्रश्नावली, साइबर-बीमा जाँच और एंटरप्राइज खरीदार इस हेडर को स्कैन करते हैं; इसकी अनुपस्थिति 'वे बुनियादी बातें नहीं करते' के रूप में पढ़ी जाती है।
- पुराने ब्राउज़र और कुछ एकीकरण सामग्री प्रकारों को 'स्निफ' करते हैं और फ़ाइलों को ऐसे तरीकों से गलत संभाल सकते हैं जो विश्वास तोड़ते हैं या डेटा लीक करते हैं।
यह क्यों मायने रखता है। ब्राउज़र, जब एक सर्वर एक फ़ाइल के बारे में अस्पष्ट होता है, तो सामग्री प्रकार का अनुमान ('स्निफ') करने की कोशिश करेंगे। हमलावर उस अनुमान का फायदा उठाते हैं: एक फ़ाइल अपलोड करें जिसे सर्वर एक छवि के रूप में लेबल करता है, लेकिन उसकी सामग्री तैयार करें ताकि ब्राउज़र तय करे कि यह वास्तव में JavaScript है — और इसे चलाए। X-Content-Type-Options: nosniff हेडर हर ब्राउज़र को अनुमान लगाना बंद करने और सर्वर के बताए प्रकार पर भरोसा करने के लिए कहता है।
मालिक के लिए संक्षिप्त संस्करण
हर वेब ब्राउज़र में एक शांत धारणा बनी है: जब यह आपकी साइट से एक फ़ाइल डाउनलोड करता है, तो यह यह काम करने की कोशिश करता है कि यह किस प्रकार की फ़ाइल है। आमतौर पर यह आपके सर्वर पर भरोसा करता है। लेकिन यदि आपका सर्वर अस्पष्ट है, तो ब्राउज़र अनुमान लगाएगा — और वह अनुमान लगाना MIME-स्निफिंग कहलाता है।
समस्या यह है कि हमलावर अनुमान के साथ खिलवाड़ कर सकते हैं। वे एक ऐसी फ़ाइल बना सकते हैं जिसे आपका सर्वर ईमानदारी से एक हानिरहित छवि मानता है, लेकिन ब्राउज़र, अनुमान लगाने के लिए छोड़ दिया जाए, तय करता है कि यह वास्तव में प्रोग्राम कोड का एक टुकड़ा है — और फिर इसे चलाता है, आपके ग्राहक के ब्राउज़र के अंदर, आपके डोमेन पर।
एक एक-पंक्ति निर्देश है जो अनुमान लगाना बंद करता है: X-Content-Type-Options: nosniff। यह हर ब्राउज़र को कहता है, “अनुमान मत लगाओ — बिल्कुल वही भरोसा करो जो मेरा सर्वर तुम्हें बताता है।” यही पूरा सुधार है। यह मुफ्त है, लगभग पाँच मिनट लेता है, और उचित रूप से निर्मित साइट पर कुछ नहीं तोड़ता।
यह जाँच उस हेडर की तलाश करती है। यदि यह गायब है, तो आप 25 अंक खोते हैं।
इससे आपको क्या नुकसान हो सकता है
-
“हानिरहित अटैचमेंट” जो नहीं था। आप एक सपोर्ट पोर्टल या एक मार्केटप्लेस चलाते हैं जहाँ ग्राहक फ़ाइलें अपलोड करते हैं। एक हमलावर एक फ़ाइल अपलोड करता है जिसे आपका सिस्टम एक छवि के रूप में स्टोर और सेव करता है। nosniff के बिना, एक पीड़ित का ब्राउज़र अनुमान लगाता है कि फ़ाइल वास्तव में स्क्रिप्ट है और इसे चलाता है — चुपचाप आपकी साइट पर उस विज़िटर के लॉग-इन सेशन को चुराता है।
-
सुरक्षा प्रश्नावली पर रुका सौदा। एक बड़े ग्राहक की खरीद टीम हस्ताक्षर करने से पहले आपकी साइट का एक स्वचालित स्कैन चलाती है। गायब सुरक्षा हेडर तुरंत दिखाई देते हैं।
-
साइबर-बीमा नवीनीकरण जो कठिन हो जाता है। अधिक बीमाकर्ता अब उद्धरण देने या नवीनीकरण से पहले बाहरी स्कैन चलाते हैं।
-
आप आसानी से वापस नहीं कर सकते प्रतिष्ठा हानि। यदि एक सेशन-हाइजैकिंग घटना आपके डोमेन से सेव की गई फ़ाइल पर वापस आती है, तो कहानी “एक अस्पष्ट हेडर गायब था” नहीं है — यह “[आपका व्यवसाय] ग्राहक खातों को लीक किया।“
यह वास्तव में क्या है
जब एक ब्राउज़र एक फ़ाइल प्राप्त करता है, तो सर्वर को इसे एक सामग्री प्रकार के साथ लेबल करना चाहिए। ऐतिहासिक रूप से, ब्राउज़र उस लेबल पर पूरी तरह भरोसा नहीं करते थे — इसलिए वे फ़ाइल के वास्तविक बाइट्स को देखते और खुद तय करते। वह देखना MIME-स्निफिंग है।
X-Content-Type-Options: nosniff पूरी तरह से अनुमान लगाना हटा देता है। इसके सेट होने से, ब्राउज़र को कहा जाता है: सर्वर के घोषित प्रकार का उपयोग करें और कुछ नहीं।
“अच्छा” कैसा दिखता है: आपकी साइट से हर प्रतिक्रिया — पेज और एसेट समान रूप से — बिल्कुल यह हेडर ले जाती है:
X-Content-Type-Options: nosniff
कोई अन्य वैध मान नहीं है और कुछ भी ट्यून करने के लिए नहीं है। यदि आपका CDN और आपका सर्वर दोनों इसे जोड़ते हैं (इसलिए आप nosniff, nosniff देखते हैं), तो यह ठीक है।
इसे कैसे ठीक करें (मुफ्त, ~5 मिनट)
इस अनुभाग को जो भी आपकी वेबसाइट चलाता है उसे सौंपें — ठीक करना मुफ्त और त्वरित है; खरीदने के लिए कुछ नहीं है।
Cloudflare (या एक समान CDN/प्रॉक्सी) — अक्सर सबसे तेज़ स्थान, एक बार में पूरी साइट को कवर करता है:
- एक Response Header Transform Rule (Rules → Transform Rules → Modify Response Header) उपयोग करें
X-Content-Type-Optionsको सभी अनुरोधों के लिएnosniffपर सेट करने के लिए।
Nginx — संबंधित server (या location) ब्लॉक के अंदर जोड़ें:
add_header X-Content-Type-Options "nosniff" always;
Apache — mod_headers सक्षम होने की आवश्यकता है; साइट कॉन्फ़िग या .htaccess में:
Header always set X-Content-Type-Options "nosniff"
IIS / Windows होस्टिंग — web.config में <system.webServer> के तहत:
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
Node / Express — हर प्रतिक्रिया के लिए सेट करें:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
});
(या helmet पैकेज उपयोग करें, जो डिफ़ॉल्ट रूप से यह और कई अन्य सुरक्षा हेडर सेट करता है।)
Google Workspace / Microsoft 365 साइट: ये आपके ईमेल और दस्तावेज प्रबंधित करते हैं, आपकी सार्वजनिक वेबसाइट होस्टिंग नहीं — इसलिए हेडर वहाँ सेट नहीं है। यदि आप एक होस्टेड साइट बिल्डर (Squarespace, Wix, Shopify और समान) उपयोग करते हैं, तो कई इस हेडर को आपके लिए स्वचालित रूप से जोड़ते हैं।
सामान्य गलतियाँ
- इसे केवल होमपेज पर सेट करना। हेडर हर प्रतिक्रिया पर होना चाहिए — छवियाँ, स्क्रिप्ट, स्टाइलशीट और अपलोड की गई फ़ाइलें सहित।
- मान में टाइपो। एकमात्र वैध मान
nosniffहै। - यह मानना कि यह Content Security Policy की जगह लेता है। nosniff एक लेयर है। यह नियंत्रित नहीं करता कि कौन सी स्क्रिप्ट चलने की अनुमति है — यह CSP का काम है।
- “डुप्लिकेट” हटाना। यदि आपका CDN और ऑरिजिन दोनों इसे सेट करते हैं, तो आप इसे दो बार देखेंगे। यह हानिरहित है।
- इसके लिए भुगतान करना। यह एक मुफ्त कॉन्फ़िगरेशन परिवर्तन है।
अपने IT व्यक्ति को यह सौंपें
तकनीकी सारांश: यह जाँच HTTP प्रतिक्रिया हेडर का निरीक्षण करती है और पास होती है जब X-Content-Type-Options मौजूद है और इसका (केस-असंवेदनशील) मान nosniff है — मल्टी-स्रोत nosniff, nosniff मामले सहित। यह एक स्कोर किया गया P2 जाँच है, 25 अंकों का मूल्य, विफल होने पर मध्यम गंभीरता के रूप में ग्रेड किया गया।
अक्सर पूछे जाने वाले प्रश्न
हम किसी को फ़ाइलें अपलोड नहीं करने देते। क्या हमें अभी भी इसकी जरूरत है?
हाँ, और यह अभी भी करने योग्य है। हेडर रक्षा-में-गहराई है: यह ब्राउज़र को आपकी अपनी साइट से दी गई स्क्रिप्ट, स्टाइलशीट और डेटा फ़ाइलों को गलत पढ़ने से भी रोकता है। इसकी कोई लागत नहीं है और कभी भी सही ढंग से कॉन्फ़िगर साइट को नहीं तोड़ता।
क्या इसे जोड़ने से हमारी वेबसाइट पर कुछ टूट जाएगा?
लगभग कभी नहीं। nosniff बस ब्राउज़रों को वह सामग्री प्रकार मानने के लिए कहता है जो आपका सर्वर पहले से भेजता है।
अच्छा वास्तव में कैसा दिखता है?
हर पेज और एसेट पर एक एकल प्रतिक्रिया हेडर: X-Content-Type-Options: nosniff। यही पूरा सही कॉन्फ़िगरेशन है।
हमारा CDN (Cloudflare या समान) और हमारा सर्वर दोनों इसे जोड़ते हैं — क्या यह एक समस्या है?
नहीं। मान को दो बार देखना ('nosniff, nosniff') क्योंकि CDN और ऑरिजिन दोनों इसे सेट करते हैं, पूरी तरह ठीक है।
क्या इसे ठीक करने में पैसे खर्च होते हैं?
नहीं। ठीक करना आपके वेब सर्वर या CDN पर एक पंक्ति मुफ्त कॉन्फ़िगरेशन है।
यह Content Security Policy (CSP) से कैसे अलग है?
वे पूरक हैं। CSP नियंत्रित करता है कि कौन सी स्क्रिप्ट और संसाधन बिल्कुल लोड होने की अनुमति है; nosniff ब्राउज़र को एक फ़ाइल को गलत वर्गीकृत करने से रोकता है जो वह लोड करता है।