浏览器安全机制详解:XSS与CSRF攻击的攻防实战
一、XSS攻击:原理与防范
1. 攻击原理
XSS(Cross-Site Scripting)通过注入恶意脚本到网页中,利用用户浏览器执行非法操作。攻击者常通过以下途径实现:
- 存储型XSS:恶意脚本存储于服务端(如评论区),用户访问时触发。
- 反射型XSS:通过URL参数注入脚本,服务端未过滤直接返回给客户端。
- DOM型XSS:前端脚本直接操作DOM时未校验输入,导致执行恶意代码。
示例:攻击者在表单输入中注入<script>窃取Cookie代码</script>
,其他用户浏览时触发恶意行为。
2. 防御策略
- 输入过滤与输出编码:对用户输入进行正则校验(如剔除
<script>
标签),输出时使用textContent
或HTMLEncode
转义敏感字符。 - 内容安全策略(CSP) :通过HTTP头部限制脚本来源,如
Content-Security-Policy: script-src 'self'
仅允许同域脚本。 - HttpOnly Cookie:设置
Set-Cookie: HttpOnly
防止JavaScript访问敏感Cookie。 - 框架安全实践:避免React的
dangerouslySetInnerHTML
和Vue的v-html
直接渲染用户输入。
二、CSRF攻击:原理与防范
CSRF攻击示意
用户浏览器 恶意网站B 网站A | | | |--- 登录A,存Cookie| | |<------------------| | |--- 访问B --------->| | |<-- 返回恶意页面 --| | |(含<img src="A.com/transfer?to=hacker">) |--- 请求A.com -----|------------------>| |(携带Cookie,执行转账)
1. 攻击原理
CSRF(Cross-Site Request Forgery)诱导用户浏览器在已认证的网站发起非法请求。典型流程如下:
- 用户登录网站A,Cookie保存会话凭证。
- 用户访问恶意网站B,触发隐藏请求(如自动加载伪造的
<img src="[https://A.com/transfer ](https://A.com/transfer )?to=hacker">
)。 - 浏览器携带Cookie向网站A发送请求,完成转账等敏感操作。
2. 防御策略
- CSRF Token:服务端生成随机Token,嵌入表单或请求头,验证请求合法性。
- SameSite Cookie:设置
SameSite=Strict/Lax
限制跨域请求携带Cookie。 - 双重Cookie验证:前端从Cookie读取Token并附加到请求头,服务端对比两者一致性。
- 验证码与Referer检查:敏感操作需验证码,或校验请求来源域名。
三、综合防御体系
1. 基础设施加固
- 强制HTTPS:防止中间人攻击,结合HSTS头部确保全站加密。
- 安全响应头:
X-Frame-Options: DENY
禁止页面被内嵌为iframe。X-XSS-Protection: 1; mode=block
启用浏览器XSS过滤。
2. 开发实践
- 输入输出全链路控制:从前端表单到服务端存储均需过滤与编码。
- 定期安全扫描:使用工具检测XSS/CSRF漏洞(如OWASP ZAP)。
结语
XSS与CSRF是Web安全的“双生威胁”,需通过编码规范、安全策略与基础设施多维度防御。开发者应持续关注OWASP Top 10等安全标准,结合CSP、CSRF Token等机制,构建纵深防护体系。