Skip to content

http 协议中的 CSP 是什么?

参考答案:

什么是 CSP?

CSP (Content Security Policy) 是 HTTP 协议中的一种安全功能,全称为 内容安全策略。它用于帮助浏览器检测和阻止某些类型的安全威胁,例如 跨站脚本攻击(XSS)数据注入攻击。通过限制页面加载的内容来源,CSP 能够有效减少攻击面,提高 Web 应用的安全性。


CSP 的工作原理

  1. 定义策略:服务器通过 HTTP 响应头 Content-Security-Policy,或 <meta> 标签来定义 CSP 策略。
  2. 策略作用:浏览器根据定义的策略控制页面中可加载的资源(如脚本、样式、图片等)的来源。
  3. 检测与阻止
    • 如果资源或行为不符合策略,浏览器会阻止加载。
    • 可通过策略开启“报告模式”,将违反策略的行为报告到指定的 URL。

CSP 的常见指令

CSP 策略由一组指令组成,每条指令控制特定类型资源的加载规则:

指令名功能描述示例
default-src默认资源加载策略,应用于未指定的其他类型资源default-src 'self'
script-src控制脚本的加载来源,防止恶意脚本注入script-src 'self' 'unsafe-inline'
style-src控制样式的加载来源style-src 'self' 'unsafe-inline'
img-src控制图片的加载来源img-src 'self' data:
font-src控制字体文件的加载来源font-src 'self'
connect-src限制通过 fetchXHR 等方式发起的网络请求connect-src api.example.com
frame-src控制可嵌入框架(iframe)的来源frame-src 'self'
report-uri指定报告 CSP 违规的 URLreport-uri /csp-report
object-src限制 <object><embed><applet> 的资源加载object-src 'none'

CSP 策略示例

1. 防止加载外部脚本

仅允许从当前域名加载脚本资源:

http
Content-Security-Policy: script-src 'self';

2. 允许可信的第三方资源

允许加载 Google Analytics 脚本,但阻止其他外部脚本:

http
Content-Security-Policy: script-src 'self' https://www.google-analytics.com;

3. 开启报告模式

仅报告违反 CSP 的行为,而不阻止加载:

http
Content-Security-Policy: default-src 'self'; report-uri /csp-report;

CSP 的作用

  1. 防止 XSS 攻击

    • 阻止执行未授权的脚本。
    • 限制恶意代码通过注入攻击运行。
  2. 限制恶意内容加载

    • 防止加载来自未信任来源的资源(如图片、脚本、iframe)。
  3. 减少数据泄露风险

    • 限制可以发起网络请求的目标域名。

CSP 的不足

  1. 配置复杂:对于大型 Web 应用,CSP 的配置可能较为繁琐。
  2. 兼容性问题:老旧浏览器可能不支持某些 CSP 功能。
  3. 灵活性受限:严格的 CSP 策略可能会影响某些合法的动态功能(如内联脚本)。

题目要点:

CSP 是一种强大的 Web 安全机制,能有效抵御 XSS 和资源注入攻击。然而,CSP 的正确配置需要根据实际业务场景权衡安全性与灵活性。通过合理使用 CSP,可以显著提高 Web 应用的安全性,同时为开发者提供实时的安全问题报告。