Cross-Site-Scripting "DOM-basiertes" Beispiele: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 47: | Zeile 47: | ||
* JavaScript auf nicht vertrauenswürdigen Seiten abschalten | * JavaScript auf nicht vertrauenswürdigen Seiten abschalten | ||
| − | = Auf Seite des Programmierers = | + | == Auf Seite des Programmierers == |
* <script>-Tags aus dem Parameter entfernen | * <script>-Tags aus dem Parameter entfernen | ||
Aktuelle Version vom 7. März 2023, 11:56 Uhr
Cross-Site-Scripting "DOM-basiert"
Um was geht es?
Link
Normale Verhaltensweise
- Über den GET-Parameter default wird der Inhalt dieser Seite generiert
- http://opfer.secure.local/scripts/xss-dom.html?default=Bitte%20auf%20dieser%20Seite%20JavaScript%20ausschalten
Exploit über die URL
HTML Code der Seite
<!DOCTYPE html>
<html>
<body>
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
Der Inhalt dieser Seite wird statisch generiert.
<script>
if (document.location.href.indexOf("default=") >= 0) {
var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
document.write(decodeURI(text));
}
</script>
</body>
</html>
Wie können wir so etwas Vermeiden?
Auf der Seite des Clients
- JavaScript auf nicht vertrauenswürdigen Seiten abschalten
Auf Seite des Programmierers
- <script>-Tags aus dem Parameter entfernen
<!DOCTYPE html>
<html>
<body>
<h1>DOM Basiertes Cross Site Scripting (XSS)</h1>
Der Inhalt dieser Seite wird statisch generiert.
<script>
if (document.location.href.indexOf("default=") >= 0) {
var text = document.location.href.substring(document.location.href.indexOf("default=")+8);
var parsed = decodeURI(text)
var parsed = parsed.replace("<script>", "Achtung JavaScript Element! ")
var parsed = parsed.replace("<\/script>", " Achtung JavaScript Element! ")
document.write(parsed);
}
</script>
</body>
</html>


