web-dev-qa-db-fra.com

CSP style-src: 'unsafe-inline' - ça vaut le coup?

Actuellement, j'utilise Modernizr sur tous mes sites et il s'avère qu'en raison de son fonctionnement, il nécessite unsafe-inline styles à autoriser. Je n'autorise déjà pas les scripts en ligne et unsafe-eval pour les scripts. Vous voulez savoir quels sont les risques de sécurité liés à l’autorisation de styles en ligne?

28
anthony-dandrea

Autoriser les styles en ligne vous rend vulnérable à un "autre XSS". Attaques Cross Site Styling.

L'idée ici est que tout endroit où un utilisateur peut injecter un attribut de style dans votre document peut modifier l'apparence de votre page comme il le souhaite. Je vais énumérer quelques attaques potentielles ordonnées en augmentant la gravité:

  1. Ils pourraient rendre votre page rose et la rendre ridicule.
  2. Ils pourraient modifier le texte de votre page, donnant l'impression que vous dites quelque chose d'offensant qui pourrait offenser votre public de lecteurs.
  3. Ils pourraient faire apparaître le contenu généré par l'utilisateur, comme un lien fourni, en dehors des endroits normaux où les gens s'attendent à voir du contenu utilisateur, le rendant officiel. (par exemple, en remplaçant un bouton "Connexion" sur votre site par leur propre lien).
  4. En utilisant des règles de style soigneusement conçues, ils pourraient envoyer toute information incluse sur la page à des domaines externes et exposer ou utiliser ces données de manière malveillante contre vos utilisateurs.

Le quatrième exemple, avec la fuite des informations vers des domaines externes, pourrait être entièrement évité malgré le unsafe-inline à condition de vous assurer que vos autres règles CSP n'autorisent aucun type de demande à accéder à un domaine non fiable ou générique. Mais les 3 premiers seront toujours possibles si vous manquez de bloquer un attribut de style quelque part.

Mike West a fait du bon talk à ce sujet pour CSSConf il y a quelques années pour d'autres exemples.

32
anthonyryan1