无需登录 数据私有 本地保存

CSP 策略评估助手 - 内容安全策略强度评分

9
0
0
0

CSP 策略评估助手

Content Security Policy 强度评分与安全分析

CSP 策略输入
预设策略:
安全评分
-- --
请输入策略后点击评估
常见问题与知识库

Content Security Policy (CSP) 是一种计算机安全标准,通过 HTTP 响应头或 <meta> 标签定义,用于检测和缓解特定类型的攻击,包括跨站脚本攻击 (XSS)点击劫持代码注入和数据包嗅探。CSP 允许网站管理员指定浏览器应该允许加载哪些资源来源,从而大幅减少攻击面。它是 OWASP 推荐的顶级安全防护措施之一。

'unsafe-inline' 允许在 HTML 中直接使用内联脚本和样式(如 <script>alert(1)</script>onclick 事件处理),这完全绕过了 CSP 的 XSS 防护机制。攻击者一旦成功注入内联代码,CSP 将无法阻止其执行。最佳实践是使用 nonce(随机数)或 hash(哈希值)来精确控制允许哪些内联脚本,同时配合 'strict-dynamic' 实现更灵活的信任传递。

Nonce(随机数):是一个每次请求都变化的随机字符串,服务端将其嵌入 <script nonce="random123"> 标签和 CSP 头中。浏览器只执行 nonce 匹配的脚本。优点是灵活,适合动态内容;缺点是要求服务端动态生成。

Hash(哈希值):是对脚本内容进行 SHA-256/384/512 哈希计算得到的固定值,如 'sha256-abc123...'。浏览器会计算每个内联脚本的哈希并与 CSP 中的值比对。优点是无需服务端动态处理,适合静态内容;缺点是脚本内容变化时需要更新哈希。

frame-ancestors 指令用于防止点击劫持 (Clickjacking) 攻击——攻击者将您的网站嵌入到透明的 iframe 中,诱骗用户进行非自愿操作。如果不设置此指令,您的网站可能被任意第三方页面嵌入。推荐设置frame-ancestors 'none'(完全禁止嵌入)或 frame-ancestors 'self'(仅允许同源嵌入)。此指令已取代旧的 X-Frame-Options 头。

default-src 是 CSP 的回退指令。当其他具体指令(如 script-srcimg-src 等)未设置时,浏览器会使用 default-src 的值作为默认限制。强烈建议始终设置 default-src,通常设为 'self''none',然后按需为各个资源类型开放更宽松的策略。这样可以确保"默认拒绝,显式允许"的安全原则。

使用 Report-Only 模式:将 HTTP 头改为 Content-Security-Policy-Report-Only,这样浏览器只会报告违规但不阻止任何资源加载。同时配置 report-urireport-to 将违规报告发送到您的收集端点。在生产环境部署前,建议在 Report-Only 模式下运行至少1-2周,确保没有误报后再切换到强制执行模式。

CSP 是深度防御的一层,能显著减少 XSS 的影响,但不能替代输入验证和输出编码。如果 CSP 配置存在缺陷(如使用了 'unsafe-inline' 或通配符 *),攻击者仍可能利用 XSS。最佳的 Web 安全实践是多层防护:严格的 CSP + 完善的输入输出处理 + 安全的编码实践 + 定期安全审计。

base-uri 限制 <base> 标签的 URL 来源。攻击者可能通过注入 <base href="https://evil.com/"> 来劫持页面中所有相对路径的资源请求(脚本、样式、图片等),将所有流量重定向到恶意服务器。设置 base-uri 'self'base-uri 'none' 可以有效防止这种基础URL劫持攻击