flawopen.com/xss/Kotlin
Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Kotlin. Side-by-side vulnerable vs secure code examples for Ktor HTML DSL and Thymeleaf template escaping.
Stellen Sie sich vor, jemand heftet einen Zettel an das schwarze Brett im Flur mit dem Text: 'Jeder, der dies liest, muss seine Brieftasche dem Nächsten übergeben'. Wenn die Passanten jedem Zettel blind gehorchen würden, könnte jeder Zettelschreiber das Geld aller Besucher stehlen.
Web Application SecurityCWE-79 betroffen ist.CWE-79Defense-in-DepthEin Angreifer fügt HTML-Elemente oder JavaScript-Code (z. B. <script> oder <img onerror=...>) in Eingabefelder oder URLs ein.
Die Webanwendung gibt die Eingabe direkt in der HTML-Antwort aus, ohne kontextgerechtes HTML-Entity-Encoding anzuwenden.
Wenn ein Opfer die Seite aufruft, führt der Browser den eingeschleusten Code mit den Rechten der Website aus.
Das Skript stiehlt Authentifizierungs-Cookies, liest den localStorage aus oder führt Aktionen im Namen des Nutzers durch.
// untrusted HTML loaded with JS + native bridge
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(
NativeBridge(), "Android"
)
webView.loadData(untrustedHtml,
"text/html", "UTF-8")
// sanitize first; avoid exposing a bridge
val safeHtml = sanitize(untrustedHtml)
webView.settings.javaScriptEnabled = false
webView.loadData(safeHtml,
"text/html", "UTF-8")
addJavascriptInterface() on a WebView that can load untrusted content.