flawopen.com/XSS/Content-type sniffing
XSS par MIME sniffing : comment la confusion MIME atteint le navigateur
Le navigateur utilise le Content-Type de la réponse pour décider comment traiter ses octets. Si une application sert des fichiers contrôlés par des utilisateurs avec un type absent ou incorrect, le MIME sniffing peut modifier le comportement de certaines réponses. Envoyez le type correct et X-Content-Type-Options: nosniff, et isolez les fichiers envoyés de l’origine de l’application. Cet en-tête réduit un risque d’interprétation du navigateur ; il n’assainit pas les fichiers et ne remplace pas les contrôles d’envoi.
Comment un fichier envoyé peut franchir la frontière d’un document
Une application accepte des fichiers puis les sert depuis sa propre origine authentifiée avec un Content-Type absent ou erroné. Si le navigateur interprète la réponse comme un document HTML, le balisage du fichier peut devenir actif sur l’origine du site. Cela crée un risque de XSS persistante ou de confusion de contenu à l’ouverture. L’extension et le type déclaré dans la requête d’envoi ne prouvent pas le format des octets.
Définir le type et isoler les téléchargements
HTTP/1.1 200 OK Content-Type: application/octet-stream // sans X-Content-Type-Options // même origine que l’application authentifiée
HTTP/1.1 200 OK Content-Type: text/plain; charset=utf-8 X-Content-Type-Options: nosniff Content-Disposition: attachment; filename="download.txt"
Utilisez un Content-Type choisi par le serveur et correspondant aux octets ; ne reprenez pas le type déclaré par l’expéditeur. X-Content-Type-Options: nosniff désactive le MIME sniffing pour les réponses de document et bloque les requêtes de script ou de feuille de style dont le type MIME est incorrect. Ce n’est pas une correction XSS universelle : isolez les fichiers sur une autre origine, préférez Content-Disposition: attachment pour les téléchargements et appliquez des règles de taille, d’autorisation et de validation. Pour les images et médias intégrés, renvoyez le type vérifié et testez la réponse réelle dans le navigateur.
Questions fréquentes
Non. Il contrôle l’interprétation MIME du navigateur et les vérifications des scripts et styles, mais ne valide ni n’assainit les fichiers, ne corrige pas un Content-Type erroné et n’isole pas un fichier de même origine. Utilisez une autre origine et des téléchargements en pièce jointe pour les fichiers non fiables.
Références
- MDN — en-tête de réponse X-Content-Type-Options
- Standard Fetch WHATWG — X-Content-Type-Options
- OWASP — en-têtes HTTP de sécurité