Content Security Policy (CSP) 是一种强大的网页安全机制,用于防止跨站脚本 (XSS) 和其他注入攻击。通过设置一系列的内容安全策略,CSP 可以限制网页可以加载的资源,从而保护用户数据和网站的安全性。
什么是 XSS 攻击?
跨站脚本攻击 (XSS) 是一种常见的安全漏洞,攻击者通过注入恶意脚本来劫持用户会话、破坏网站内容或进行钓鱼攻击。XSS 攻击主要分为三类:
- 存储型 XSS:恶意脚本被永久存储在目标服务器上(如数据库),并在用户访问时执行。
- 反射型 XSS:恶意脚本通过 URL 参数或表单提交传递,并在服务器响应中反射给用户。
- DOM 型 XSS:恶意脚本通过修改客户端的 DOM 结构直接在浏览器中执行。
CSP 防止 XSS 的机制
1. 限制资源加载来源
CSP 可以通过限制资源加载的来源,阻止从不可信来源加载的恶意脚本。例如,script-src 'self'
指定只允许加载同源的脚本,防止外部恶意脚本注入。
Content-Security-Policy: script-src 'self'
2. 禁止内联脚本
内联脚本(直接在 HTML 中嵌入的 <script>
标签)是 XSS 攻击的常见载体。CSP 可以通过禁止内联脚本来阻止这种攻击。
Content-Security-Policy: script-src 'self'; style-src 'self'; default-src 'self'
如果需要使用内联脚本,可以使用 nonce
(一次性令牌)或 hash
(哈希值)来明确允许特定的内联脚本。
<script nonce=