# 什么是 xss 攻击
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的 Web 安全漏洞,攻击者通过在网页中注入恶意脚本代码,当其他用户浏览该网页时,这些脚本会在用户的浏览器中执行。
# 基本工作原理
- 攻击者发现网站存在未对用户输入进行适当过滤的漏洞
- 将恶意 JavaScript 代码注入到网页内容中
- 当其他用户访问该页面时,恶意脚本在他们的浏览器中执行
- 脚本可以窃取用户数据、会话 cookie 或进行其他恶意操作
# 主要类型
# 1. 反射型 XSS(非持久型)
- 恶意脚本作为请求的一部分发送到服务器,然后立即反射回响应页面
- 通常通过诱骗用户点击特制链接实施
- 示例:
http://example.com/search?q=<script>alert('XSS')</script>
# 2. 存储型 XSS(持久型)
- 恶意脚本被永久存储在目标服务器上(如数据库)
- 每当用户访问受影响页面时都会执行
- 常见于论坛评论、用户资料等位置
# 3. DOM 型 XSS
-
完全在客户端发生,不涉及服务器
-
由于不安全的 DOM 操作导致
-
示例:
javascript
document.write(location.hash.substring(1));
攻击者可能构造 URL:
http://example.com#<script>恶意代码</script>
# 潜在危害
- 窃取用户会话 Cookie:获取用户登录状态
- 键盘记录:捕获用户输入
- 钓鱼攻击:伪造登录表单
- 网站篡改:修改页面内容
- 传播蠕虫:自我复制的 XSS 攻击
- 下载恶意软件
# 防御措施
- 输入过滤和验证
- 对用户输入进行严格过滤
- 使用白名单而非黑名单方法
- 输出编码
- 在将数据输出到页面时进行 HTML 编码
- 使用安全的 API 如:
textContent
代替innerHTML
- 内容安全策略 (CSP)
- 通过 HTTP 头限制可执行的脚本来源
Content-Security-Policy: default-src 'self'
- HttpOnly Cookie 标志
- 防止 JavaScript 访问敏感 Cookie
Set-Cookie: sessionid=xxxx; HttpOnly
- 使用现代框架的安全功能
- React、Vue 等框架有内置的 XSS 防护
- 定期安全测试
- 使用自动化工具和手动测试发现 XSS 漏洞