Drei Levels – Reflected, Stored und DOM-based.
Injiziere JavaScript über den Suchparameter in die Seite.
<script>alert('XSS')</script>
Der Inhalt des GET-Parameters q wird ungefiltert
in den HTML-Body eingebettet. Der Browser führt
das Script direkt aus.
Hinterlasse einen Kommentar – oder speichere dauerhaft JavaScript in der Datenbank.
<script>alert('Stored XSS')</script>
Das Script wird in der Datenbank gespeichert und
bei jedem Seitenaufruf für alle Besucher ausgeführt –
gefährlicher als Reflected XSS.
Der Server ist uninvolviert – JavaScript liest den URL-Fragment und schreibt ihn in den DOM.
#name=DeinName an die URL an.
URL: /public/challenges/xss/#name=<img src=x onerror=alert(1)> Das Fragment (#...) erreicht den Server nie – der Angriff findet rein im Browser statt. location.hash wird direkt in innerHTML geschrieben.