flawopen.com/XSS/Content-type sniffing
MIME sniffing XSS: MIME भ्रम browser तक कैसे पहुँचता है
ब्राउज़र response के Content-Type से तय करता है कि bytes को कैसे संभालना है। यदि ऐप user-controlled files को गलत या अनुपस्थित type के साथ serve करता है, तो MIME sniffing कुछ responses का व्यवहार बदल सकता है। सही type और X-Content-Type-Options: nosniff भेजें और uploads को ऐप के origin से अलग रखें। यह header browser interpretation का एक जोखिम घटाता है; यह files को sanitize नहीं करता और upload controls की जगह नहीं लेता।
Upload document boundary कैसे पार कर सकता है
मान लें ऐप user uploads स्वीकार करता है और फिर उन्हें अपने authenticated origin से अनुपस्थित या गलत Content-Type के साथ serve करता है। यदि browser response को HTML document मानता है, तो file का markup site origin में सक्रिय हो सकता है। फ़ाइल खोलने पर stored XSS या content confusion का जोखिम बनता है। Extension और upload request में बताया गया media type bytes के वास्तविक format का प्रमाण नहीं हैं।
Type स्पष्ट करें और downloads अलग रखें
HTTP/1.1 200 OK Content-Type: application/octet-stream // X-Content-Type-Options नहीं है // authenticated app वाला ही origin
HTTP/1.1 200 OK Content-Type: text/plain; charset=utf-8 X-Content-Type-Options: nosniff Content-Disposition: attachment; filename="download.txt"
Server द्वारा चुना गया ऐसा Content-Type दें जो bytes से मेल खाता हो; uploader का दावा न अपनाएँ। X-Content-Type-Options: nosniff document responses के लिए MIME sniffing बंद करता है और गलत MIME type वाली script या stylesheet requests रोकता है। यह हर XSS का समाधान नहीं है: uploads को अलग origin से serve करें, download के लिए Content-Disposition: attachment प्राथमिकता दें, और size, authorization तथा file validation लागू करें। Inline image या media के लिए सत्यापित type लौटाएँ और browser का वास्तविक response जाँचें।
आम सवाल
नहीं। यह browser की MIME व्याख्या और script/style request checks नियंत्रित करता है, पर file को validate या sanitize नहीं करता, गलत Content-Type सुधारता नहीं, और same-origin upload को अलग नहीं करता। अविश्वसनीय files के लिए अलग origin और attachment downloads उपयोग करें।
संदर्भ
- MDN — X-Content-Type-Options response header
- WHATWG Fetch Standard — X-Content-Type-Options
- OWASP — HTTP Security Response Headers