内容安全策略(Content Security Policy,简称CSP)是Web安全领域的重要技术,用于防止跨站脚本(XSS)、数据注入等攻击。通过设置HTTP头 Content-Security-Policy,开发者可以定义哪些资源(如脚本、样式、图片)可以被加载和执行,从而提升网站安全性。

核心概念

  1. CSP的作用

    • 阻止恶意代码通过第三方资源注入
    • 限制页面内容的来源,减少攻击面
    • 支持动态策略调整(通过 Content-Security-Policy-Report-Only 测试)
  2. 常见指令

    • script-src:控制脚本加载来源
    • style-src:限制样式表加载
    • img-src:定义图片资源范围
    • connect-src:规范API请求地址
    • sandbox:启用沙箱模式增强安全
  3. 策略类型

    • 非报告模式:直接阻止违规内容
      内容安全策略
    • 报告模式:仅记录违规行为,不阻止
      CSP配置示例

实践指南

  1. 启用CSP

    Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline' https://trusted-cdn.com
    

    注意:生产环境建议禁用 'unsafe-inline' 以避免安全风险

  2. 处理兼容性

    • 使用 Content-Security-Policy-Report-Only 测试策略
    • 通过 Violation-Report-Endpoint 收集违规数据
  3. 高级功能

    • nonce-<值>:为单个资源生成一次性随机值
    • hash-<值>:基于资源内容哈希值授权
    • report-uri:指定违规报告地址

扩展阅读

如需深入了解CSP实践,可参考本站的 CSP实践指南 获取具体案例与代码示例。

安全防护