Web 内容安全策略(CSP)
字数 980 2025-11-22 01:10:36
Web 内容安全策略(CSP)
-
基础概念
CSP 是一种浏览器安全机制,用于检测和缓解特定类型的网络攻击,如跨站脚本(XSS)和数据注入。它通过 HTTP 响应头(如Content-Security-Policy)定义规则,限制页面可加载资源的来源(如脚本、样式、图片等),从而减少恶意代码执行的风险。 -
核心规则与指令
CSP 通过指令控制不同资源的加载权限。常见指令包括:default-src:默认资源加载策略(未指定时的回退规则)。script-src:限制 JavaScript 的来源(例如禁止内联脚本或指定可信域名)。style-src:控制 CSS 文件的来源。img-src:管理图片资源的域名白名单。connect-src:限制 XMLHttpRequest、WebSocket 等连接的目标地址。
示例策略:
Content-Security-Policy: default-src 'self'; script-src https://trusted.cdn.com; style-src 'unsafe-inline';此策略仅允许从同源加载默认资源,脚本仅来自
https://trusted.cdn.com,并允许内联样式(需谨慎使用)。 -
攻击防护原理
- 防御 XSS:通过禁止内联脚本(如
<script>alert()</script>)和限制外部脚本域名,使攻击者无法注入恶意代码。 - 控制数据泄露:限制
connect-src可防止数据被发送到恶意服务器。 - 非ces与严格动态:使用
'nonce-{随机值}'或'strict-dynamic'允许特定内联脚本执行,同时保持严格安全性。
- 防御 XSS:通过禁止内联脚本(如
-
部署与调试
- 渐进部署:先使用
Content-Security-Policy-Report-Only头仅报告违规行为而不阻塞资源,通过浏览器控制台或上报端点(report-uri)收集数据,逐步调整策略。 - 错误分析:浏览器会拦截违反 CSP 的资源并输出错误信息,帮助开发者调整白名单。
- 渐进部署:先使用
-
高级特性与演进
- CSP Level 3 支持
worker-src(控制 Worker 脚本)、manifest-src(应用清单文件)等新指令。 - 与其他安全机制协作:例如结合 Subresource Integrity(SRI)确保外部资源完整性,或通过 HTTPS 强制安全传输。
- CSP Level 3 支持
通过以上步骤,CSP 从基础规则定义到动态防护,逐步构建针对内容注入攻击的深层防御体系。