flawopen.com/xss/Swift

● CWE-79 · 高危
安全研究 · FlawOpen

漏洞深度剖析:Cross-Site Scripting in Swift

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Swift. Side-by-side vulnerable vs secure code examples for Vapor Leaf template contextual 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-swift.
Defense-in-Depth
技术概念 (Defense-in-Depth):Multi-layered engineering verification and runtime boundary isolation.

攻击执行流程分解

Step 1

注入恶意脚本载荷

攻击者在表单输入框、URL 查询参数中输入恶意 HTML 标签或 JavaScript 代码(如 <script> 或 <img onerror=...>)。

Step 2

未转义直接渲染或持久化存储

应用程序将原始输入未经上下文 HTML 实体编码即直接拼接入页面或写入数据库。

Step 3

受害者浏览器 DOM 解析与执行

当受害者访问该页面时,浏览器将未转义的字符解析为合法的可执行脚本而非普通文本。

Step 4

会话劫持与同源特权滥用

恶意脚本在受害者会话上下文中执行,窃取 document.cookie、读取 LocalStorage 凭据或冒名发起操作。

源代码对比:漏洞与安全实现

✕ 存在漏洞的实现
// untrusted HTML loaded with no sanitization
webView.loadHTMLString(
  untrustedHtml, baseURL: nil
)
✓ 加固后的安全修复
// sanitize before loading
let safeHtml = sanitize(untrustedHtml)
webView.loadHTMLString(
  safeHtml, baseURL: nil
)

工程与系统安全加固清单

References