By zamknąć temat przykładu dotyczącego wykorzystania na stronie danych z różnych źródeł jedna krótka uwaga. Teoretycznie "prawidłowo" wstawiony payload XSS powinien wyglądać tak:
<img src="niemamnie" onerror="alert(/XSS/)">
Jak to zwykle bywa teoria rozmija się z praktyką. Okazuje się, że większość (wszystkie?) przeglądarek jest dość liberalna i równie ochoczo zinterpretują taki payload:
<img src="niemamnie" onerror="alert(/XSS/)"
Każdy może sobie to sprawdzić tutaj: http://bootcamp.threats.pl/lesson09/. Istnieją co prawda dodatkowe różnice między przeglądarkami w przypadku, gdy wspomniany kod HTML jest wstawiany poprzez innerHTML, ale to niech już każdy zainteresowany sprawdzi sobie we własnym zakresie :)
chodziło o (oczywiście trzeba zastąpić nawiasy odpowiednimi znaczkami):
[img [iframe ="1" onerror="alert(1)"]
Powyższy payload lubi zawiesić niektóre filtry antixssowe (wpadają w nieskończoną pętlę i alokują max. pamięci).
Ostatnimi czasy najciekawsze payloady znajduje Gareth Heyes - warto np. zobaczyć http://www.thespanner.co.uk/2010/11/25/breaking-html-parsers-for-fun/