2016-12-22 6 views
2

Lors de l'ajout de l'attribut de style ci-dessous sur un site Web populaire dans IE7 émulateur rien ne s'est passé, mais quand je l'exécute à partir d'un site Web trivial dans l'émulateur IE7 il est exécuté.Bloquer l'exécution de javascript à partir de css

<body style="width: expression(alert())"> 

Comment pouvez-vous empêcher l'exécution de l'expression?

+0

Demandez-vous comment empêcher cela dans IE 7, ou comment l'empêcher de s'exécuter dans des navigateurs encore supportés? – user3553031

+0

IE7 est mort depuis longtemps depuis Microsoft Outlook. –

+0

Est-ce vraiment un problème XSS? Autoriseriez-vous les utilisateurs de votre site à modifier ses styles? – nnnnnn

Répondre

0

La fonctionnalité dont vous parlez s'appelle Dynamic Properties et n'est plus supportée depuis IE8.

Les propriétés dynamiques (également appelées "expressions CSS") ne sont plus prises en charge dans Internet Explorer 8 et versions ultérieures, en mode IE8 Standards et versions ultérieures. Cette décision a été prise pour la conformité aux normes, les performances du navigateur et les raisons de sécurité. Les propriétés dynamiques sont toujours disponibles dans Internet Explorer 8 en mode IE7 ou en mode IE5. (Pour plus d'informations sur les modes de compatibilité des documents, voir Définition de la compatibilité des documents.) Étant donné qu'Internet Explorer 8 en mode IE8 est entièrement conforme aux normes CSS2.1, les propriétés les plus dynamiques écrites pour contourner les cascades Les insuffisances liées aux feuilles de style (CSS) dans les versions précédentes d'Internet Explorer ne devraient plus être nécessaires. D'autres propriétés dynamiques avec des utilisations plus spécifiques peuvent généralement être remplacées par JavaScript standard.

+0

Alors, comment cela répond à la question de savoir comment cela fonctionne ou comment l'empêcher dans IE7? – nnnnnn

+0

Je sais que ce n'est pas supporté et déconseillé, je veux savoir comment ils ont réparé il y a 5 ans. Parce que ce genre de problème existe toujours avec HTC jusqu'à IE9 – gr3g

1

En tant que l'atténuation des JavaScript étant injecté dans des endroits inattendus dans modernes navigateurs, utilisez un content security policy. Par exemple, un CSP de script-src: none; refusera toute exécution de JavaScript dans votre page, indépendamment de l'origine. Des règles plus nuancées peuvent être conçues pour autoriser JavaScript uniquement à partir d'URI spécifiques ou uniquement des scripts avec des hachages spécifiques.

+0

C'est bon pour XSS, mais ici le code malicieux vient de 'soi'. Mais c'est une bonne ressource, merci! – gr3g

+0

Vous pouvez refuser l'exécution JavaScript à partir de 'self' ou autoriser uniquement les scripts avec des hachages connus; c'est une bonne pratique pour la prévention XSS en général. – user3553031

+0

Cela n'empêchera pas l'exécution de 'HTC' ni de' expression' puisqu'elle ne fonctionne que depuis IE11. Mais je suis d'accord c'est un bon premier niveau de défense! Est-ce que votre code Javascript est exécuté lorsque vous refusez l'exécution de javascript à partir de 'self' ou est l'option' self' pour une application JSF? – gr3g