FlawOpen

flawopen.com/XSS/Téléversement SVG

Un téléversement SVG présente-t-il un risque XSS ?

Page de référence
Réponse courte

Un SVG téléversé est un document, pas seulement des pixels : il peut contenir des éléments actifs comme des scripts et des gestionnaires d’événements. L’exécution dépend du contexte navigateur. Un SVG utilisé dans <img> est restreint ; en ligne, ouvert directement ou intégré comme document, il peut être actif.

Ce qui distingue SVG des autres formats image

Contrairement au PNG ou au JPEG, SVG est du XML et peut contenir du contenu actif. Les navigateurs désactivent les scripts dans des contextes d’image restreints comme <img>, mais pas lorsque le SVG est ouvert directement, intégré comme document via <object>, <iframe> ou <embed>, ou inséré en ligne. Une image de profil téléversée peut devenir une stored XSS si l’application la sert dans un contexte actif sous sa propre origine. Le comportement dépend du contexte ; extension et MIME ne signifient pas assainissement.

Sécuriser les téléversements

Questions fréquentes

Vérifier l’extension ou le type MIME suffit-il ?

['Vérifier l’extension ou le type MIME suffit-il ?', 'Non. L’extension et le MIME déclaré sont des métadonnées, pas une validation du contenu actif. Vérifiez le format réel puis appliquez une liste d’autorisation adaptée à SVG ou convertissez en raster si ses fonctionnalités ne sont pas nécessaires.']

Références

À voir aussi Cross-Site Scripting (XSS, CWE-79) : fonctionnement et prévention dans chaque langage — flawopen.com Risque XSS de Vue v-html WKWebView : HTML non fiable, sûr ? XSS réfléchi, stocké et DOM : quelles différences ? Risques de sécurité de addJavascriptInterface sur Android Angular : XSS, valeurs sûres et API de bypass XSS par MIME sniffing : Content-Type et nosniff