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.
Представьте, что кто-то прикрепил записку на общую доску объявлений: 'Каждый прочитавший обязан отдать свой кошелек стоящему рядом человеку'. Если бы прохожие слепо подчинялись запискам на доске, любой мог бы украсть деньги всех посетителей.
Web Application SecurityCWE-79.CWE-79CWE-79): Standard Common Weakness Enumeration classification for xss-kotlin.Defense-in-DepthАтакующий вводит HTML-теги или JavaScript-код (например, <script> или <img onerror=...>) в поля форм или параметры URL.
Приложение отображает введенные данные в HTML-странице без контекстного экранирования специальных символов.
Браузер пользователя распознает спецсимволы как исполняемый код и запускает вредоносный сценарий.
Скрипт читает document.cookie и токены из localStorage, передавая управление учетной записью злоумышленнику.
// 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.