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.
Imagina clavar una nota en el tablón de anuncios del vecindario que diga: 'Quien lea esto, entregue su cartera a la persona que tiene al lado'. Si los vecinos obedecieran ciegamente cada cartel colgado, cualquiera que pusiera una nota podría robar el dinero de todos.
Web Application SecurityCWE-79.CWE-79Defense-in-DepthEl atacante inyecta etiquetas HTML o scripts (ej. <script> o <img onerror=...>) a través de formularios o parámetros URL.
La aplicación web refleja la entrada en el HTML de respuesta o la almacena sin codificación contextual de entidades HTML.
Cuando una víctima visita la página, su navegador interpreta los caracteres inyectados como instrucciones ejecutables.
El script inyectado accede a document.cookie, tokens en almacenamiento local y envía solicitudes autenticadas en nombre de la víctima.
// 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.