Web 内容安全策略(CSP)
字数 980 2025-11-22 01:10:36

Web 内容安全策略(CSP)

  1. 基础概念
    CSP 是一种浏览器安全机制,用于检测和缓解特定类型的网络攻击,如跨站脚本(XSS)和数据注入。它通过 HTTP 响应头(如 Content-Security-Policy)定义规则,限制页面可加载资源的来源(如脚本、样式、图片等),从而减少恶意代码执行的风险。

  2. 核心规则与指令
    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,并允许内联样式(需谨慎使用)。

  3. 攻击防护原理

    • 防御 XSS:通过禁止内联脚本(如 <script>alert()</script>)和限制外部脚本域名,使攻击者无法注入恶意代码。
    • 控制数据泄露:限制 connect-src 可防止数据被发送到恶意服务器。
    • 非ces与严格动态:使用 'nonce-{随机值}''strict-dynamic' 允许特定内联脚本执行,同时保持严格安全性。
  4. 部署与调试

    • 渐进部署:先使用 Content-Security-Policy-Report-Only 头仅报告违规行为而不阻塞资源,通过浏览器控制台或上报端点(report-uri)收集数据,逐步调整策略。
    • 错误分析:浏览器会拦截违反 CSP 的资源并输出错误信息,帮助开发者调整白名单。
  5. 高级特性与演进

    • CSP Level 3 支持 worker-src(控制 Worker 脚本)、manifest-src(应用清单文件)等新指令。
    • 与其他安全机制协作:例如结合 Subresource Integrity(SRI)确保外部资源完整性,或通过 HTTPS 强制安全传输。

通过以上步骤,CSP 从基础规则定义到动态防护,逐步构建针对内容注入攻击的深层防御体系。

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