Defaults.Exposed

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 अंक खोते हैं।

इससे आपको क्या नुकसान हो सकता है

यह वास्तव में क्या है

जब एक ब्राउज़र एक फ़ाइल प्राप्त करता है, तो सर्वर को इसे एक सामग्री प्रकार के साथ लेबल करना चाहिए। ऐतिहासिक रूप से, ब्राउज़र उस लेबल पर पूरी तरह भरोसा नहीं करते थे — इसलिए वे फ़ाइल के वास्तविक बाइट्स को देखते और खुद तय करते। वह देखना MIME-स्निफिंग है।

X-Content-Type-Options: nosniff पूरी तरह से अनुमान लगाना हटा देता है। इसके सेट होने से, ब्राउज़र को कहा जाता है: सर्वर के घोषित प्रकार का उपयोग करें और कुछ नहीं।

“अच्छा” कैसा दिखता है: आपकी साइट से हर प्रतिक्रिया — पेज और एसेट समान रूप से — बिल्कुल यह हेडर ले जाती है:

X-Content-Type-Options: nosniff

कोई अन्य वैध मान नहीं है और कुछ भी ट्यून करने के लिए नहीं है। यदि आपका CDN और आपका सर्वर दोनों इसे जोड़ते हैं (इसलिए आप nosniff, nosniff देखते हैं), तो यह ठीक है।

इसे कैसे ठीक करें (मुफ्त, ~5 मिनट)

इस अनुभाग को जो भी आपकी वेबसाइट चलाता है उसे सौंपें — ठीक करना मुफ्त और त्वरित है; खरीदने के लिए कुछ नहीं है।

Cloudflare (या एक समान CDN/प्रॉक्सी) — अक्सर सबसे तेज़ स्थान, एक बार में पूरी साइट को कवर करता है:

Nginx — संबंधित server (या location) ब्लॉक के अंदर जोड़ें:

add_header X-Content-Type-Options "nosniff" always;

Apachemod_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 और समान) उपयोग करते हैं, तो कई इस हेडर को आपके लिए स्वचालित रूप से जोड़ते हैं।

सामान्य गलतियाँ

अपने 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 ब्राउज़र को एक फ़ाइल को गलत वर्गीकृत करने से रोकता है जो वह लोड करता है।