Content Security Policy (CSP) 内容安全策略总结,及抵御 XSS 攻击

Posted goloving

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Content Security Policy (CSP) 内容安全策略总结,及抵御 XSS 攻击相关的知识,希望对你有一定的参考价值。

  在浏览网页的过程中,尤其是移动端的网页,经常看到有很多无关的广告,其实大部分广告都是所在的网络劫持了网站响应的内容,并在其中植入了广告代码。为了防止这种情况发生,我们可以使用CSP来快速的阻止这种广告植入。而且可以比较好的防御dom xss。

  CSP使用方式有两种

  1、使用meta标签, 直接在页面添加meta标签

<meta http-equiv="Content-Security-Policy" content="default-src ‘self‘ *.xx.com *.xx.cn ‘unsafe-inline‘ ‘unsafe-eval‘;">

  这种方式最简单,但是也有些缺陷,每个页面都需要添加,而且不能对限制的域名进行上报。

  2、在服务端配置csp

  (1)Apache :

  Add the following to your httpd.conf in your VirtualHost or in an .htaccess file:

  Header set Content-Security-Policy "default-src ‘self‘;"

  (2)nginx :

  In your server block add:

  add_header Content-Security-Policy "default-src ‘self‘;";

  在服务端配置所有的页面都可以不需要改了,而且还支持上报。

  如果meta、响应头里都指定了Content-Security-Policy,则会优先使用响应头里的Content-Security-Policy

  CSP内容匹配的规则:规则名称 规则 规则;规则名称 规则 ...

  比如:

  default-src ‘none‘; script-src ‘self‘; connect-src ‘self‘; img-src ‘self‘; style-src ‘self‘;

  default-src ‘self‘ *.xx.com *.xx.cn aa.com ‘unsafe-inline‘ ‘unsafe-eval‘

  (*.xx.com 支持多级域名, 可以不填写http协议)

  规则解释:

  default-src   所有资源的默认策略

  script-src     JS的加载策略,会覆盖default-src中的策略,比如写了default-src xx.com;script-src x.com xx.com;   必须同时加上xx.com,因为script-src会当作一个整体覆盖整个默认的default-src规则。

  ‘unsafe-inline‘  允许执行内联的JS代码,默认为不允许,如果有内联的代码必须加上这条

  ‘unsafe-eval‘    允许执行eval等

  对自定义的协议 比如 jsxxx://aaa.com   可以写成  jsxxx:

  https协议下自动把http请求转为https可以使用  upgrade-insecure-requests

  详情配置及浏览器兼容性可查看官方文档:https://content-security-policy.com/
 

 

以上是关于Content Security Policy (CSP) 内容安全策略总结,及抵御 XSS 攻击的主要内容,如果未能解决你的问题,请参考以下文章

为啥“首选”通过标头传递 Content-Security-Policy?

Content-Security-Policy

可以将 Tomcat 7 配置为插入“Content-Security-Policy”HTTP 标头吗?

Google Analytics 和 Content-Security-Policy 标头

在 nginx 中添加 Content-Security-Policy 后 websocket 连接失败

未找到 Content-Security-Policy 元标记错误