flawopen.com/xss/Kotlin

● CWE-79 · उच्च
सुरक्षा अनुसंधान · FlawOpen

सुरक्षा भेद्यता: Cross-Site Scripting in 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.

💡 आसान भाषा में (ELI5)

कल्पना करें कि कोई सार्वजनिक नोटिस बोर्ड पर एक पर्ची चिपका देता है: 'जो कोई भी इसे पढ़े, वह अपना बटुआ पास खड़े व्यक्ति को दे दे'। यदि लोग बोर्ड पर चिपकी पर्ची के आदेश का आँख मूंदकर पालन करने लगें, तो कोई भी व्यक्ति सभी के पैसे चुरा सकता है।

इस पेज के मुख्य शब्द

Web Application Security
सुरक्षा अवधारणा (Web Application Security): Core architecture component affected by CWE-79.
CWE-79
सुरक्षा अवधारणा (CWE-79): Standard Common Weakness Enumeration classification for xss-kotlin.
Defense-in-Depth
सुरक्षा अवधारणा (Defense-in-Depth): Multi-layered engineering verification and runtime boundary isolation.

हमले का चरण-दर-चरण प्रवाह

Step 1

दुर्भावनापूर्ण स्क्रिप्ट पेलोड इंजेक्शन

हमलावर फॉर्म फ़ील्ड या URL में HTML टैग या जावास्क्रिप्ट कोड (उदा. <script> या <img onerror=...>) डालता है।

Step 2

बिना एस्केप किए HTML में रेंडरिंग

वेब एप्लिकेशन बिना उचित एन्कोडिंग के इनपुट को सीधे HTML पेज पर दिखाता है या डेटाबेस में सेव करता है।

Step 3

ब्राउज़र DOM निष्पादन

जब कोई पीड़ित पेज खोलता है, तो उसका ब्राउज़र इंजेक्ट किए गए कोड को निष्पादन योग्य स्क्रिप्ट के रूप में चलाता है।

Step 4

सत्र अपहरण और क्रेडेंशियल चोरी

स्क्रिप्ट पीड़ित के सत्र में चलती है और प्रमाणीकरण कुकीज़ या सुरक्षा टोकन चुरा लेती है।

सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन

✕ कमज़ोर कार्यान्वयन
// 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")

इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट

References