MicleMing.github.io

Blog: https://micleming.github.io/

View My GitHub Profile

内容安全策略(Content-Security-Policy)

内容安全策略(CSP)相当于定义了一个白名单,允许哪些资源能加载和执行,并设置加载的规则。而且对于不合法的资源可以进行上报。

CSP增强了网页的安全性,资源的来源限定在了可靠的来源,减少了了诸如XSS之类的安全风险。CSP在一开始便被设计为能向后兼容,即使在不支持CSP的用户代理(比如浏览器)上也不会出现问题。

浏览器的CSP功能可以根据如下两种方式进行开启:

  1. 设置http头部的Content-Security-Policy属性。
  2. 利用html里的<meta>元素来开启。

推荐的比较灵活的方式就是利用http的头部进行配置。 以nodejs为例,可以通过以下方式设置CSP

const csp = [
  "default-src 'self'",
  'img-src *',
  'media-src media.com',
  'script-src script.example.com'
].join(';')

res.setHeader('Content-Security-Policy', csp)

那么在接收到这个请求的浏览器中,如果该浏览器支持CSP, 那么它将使用如下策略:

通过这种限制资源的来源,来保证网站的安全,减少网络攻击的发生。

参考资料