Internet Explorer 8 possède une nouvelle fonctionnalité de sécurité, un filtre XSS qui tente d'intercepter les tentatives de script intersite. Il est décrit de cette façon:
Le filtre XSS, une fonctionnalité nouvelle d'Internet Explorer 8, détecte JavaScript dans les URL et les requêtes HTTP POST. Si JavaScript est détecté, le filtre XSS recherche des preuves de réflexion, des informations qui seraient renvoyées à la attaque du site Web si la demande d'attaque a été soumise sans changement. Si une réflexion est détectée, le filtre XSS nettoie la demande d'origine afin que le JavaScript supplémentaire ne puisse pas être exécuté.
Je constate que le filtre XSS intervient même lorsqu'il n'y a pas de "preuve de réflexion", et je commence à penser que le filtre remarque simplement lorsqu'une demande est adressée à un autre site et que la réponse contient JavaScript.
Mais même cela est difficile à vérifier car l'effet semble aller et venir. IE a différentes zones, et juste au moment où je pense avoir reproduit le problème, le filtre ne se déclenche plus et je ne sais pas pourquoi.
Quelqu'un a des conseils sur la façon de lutter contre cela? Qu'est-ce que le filtre recherche vraiment? Existe-t-il un moyen pour un bon gars de POST données sur un site tiers qui peut retourner du HTML à afficher dans une iframe et ne pas déclencher le filtre?
Contexte: je charge une bibliothèque JavaScript à partir d'un site tiers. Ce JavaScript récolte certaines données de la page HTML actuelle et les publie sur le site tiers, qui répond avec du HTML à afficher dans un iframe. Pour le voir en action, visitez une page AOL Food et cliquez sur l'icône "Imprimer" juste au-dessus de l'histoire.
Vous devez m'envoyer (ericlaw @ Microsoft) une capture réseau (www.fiddlercap.com) du scénario que vous pensez être incorrect.
Le filtre XSS fonctionne comme suit:
Maintenant, les détails exacts de # 7 sont assez compliqués, mais en gros, vous pouvez imaginer que IE fait une correspondance des données de demande (URL/corps de message) avec les données de réponse (corps de script) et si ils correspondent, alors les données de réponse seront modifiées.
Dans le cas de votre site, vous voudrez regarder le corps du POST to http://h30405.www3.hp.com/print/start and la réponse correspondante.
En fait, c'est pire que cela puisse paraître. Le filtre XSS peut rendre les sites sûrs dangereux. Lisez ici: http://www.h-online.com/security/news/item/Security-feature-of-Internet-Explorer-8-unsafe-868837.html
De cet article:
Cependant, Google désactive le filtre XSS d'IE en envoyant l'en-tête X-XSS-Protection: 0, ce qui le rend immunisé.
Je ne connais pas assez votre site pour juger si cela peut être une solution, mais vous pouvez probablement essayer. Plus en détail, une discussion technique sur le filtre et comment le désactiver est ici: http://michael-coates.blogspot.com/2009/11/ie8-xss-filter-bug.html