Patriot schreef op zaterdag 17 mei 2008 @ 00:29:
Sorry, maar ik ga het nu toch echt (sortof) verklappen (dat is uiteindelijk ook gewoon de bedoeling

).
Ik snap dat het komt door de character encoding. Wat ik echter niet begrijp is waarom het niet in Fx werkt. Het komt er toch op neer dat als je de page-variabele als UTF-8 verstuurd, htmlentities() deze niet escaped?
Als IE7 in de eerste 4096 characters een UTF-7 encoded string vind, terwijl er geen character encoding word meegestuurd, maakt hij er automatisch UTF-7 van.
De htmlentities() weet niet dat de character encoding als UTF-7 word gezien, dus die ziet letterlijk dit voorbij komen:
code:
1
| +ADw-script+AD4-alert(document.location)+ADw-/script+AD4- |
Daar gaat hij niks escapen, en word het zo naar de browser gestuurd. IE herkent het als UTF-7, en veranderd de character encoding accordingly.
Dit kan natuurlijk alleen als:
Er geen character encoding is meegegeven
Character encoding op auto-select staat
Probeer bovenstaande tekst te kopieren en te plakken in de voorbeeld. Als het goed is krijg je dan een alertbox te zien met de URL. Je kan het ook forceren; bijvoorbeeld door in FireFox naar de URL te gaan, en dan handmatig de character encoding op UTF-7 te zetten.
Fx verandert dus niet zijn encoding opeens naar UTF-7.
Hier nog een voorbeeld en wat uitleg, waar ik mijn voorbeeld ook grotendeels van heb gestolen:
http://shiflett.org/blog/2005/dec/google-xss-example
[
Voor 7% gewijzigd door
ChessSpider op 17-05-2008 00:38
]