挺久之前过了一遍CSP的安全策略,很多人把它喻为XSS***的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站***Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同源同域更发挥到了极致。之前把一些内容整理到了txt里,发在这里备忘一下吧:)

 

1)CSP策略在默认的情况下是不允许使用data URIs资源的,如果要使用,那么需要显示的指定,比如:img-src 'self' data:

2)通过CRLF相应头分裂注入来BypassCSP需要将新的相应头插入到原来的CSP下面,在处理相同名字的Http头时候,少数浏览器是根据第一次出现的来设置,大部分则是根据最后一次出现的同名Http头来设置。两次

3)script-src:在处理脚本资源的时候设置"unsafe-inline"可以阻止内联Js代码的执行。使用unsafe-eval开关可以禁止eval,setTimeout,setInterval函数的执行。

4)object-src:控制embed,code,archive applet等对象。

5)style-src:会控制样式表@import和rel时所引入的URI资源,设置unsafe-inline规则可以是浏览器拒绝解析内部样式和内联样式定义。并不会阻止链入外部样式表。

6)img-src:可以控制图片资源的连接,包括img标签的src属性,以及CSS3中的url()和image()方法,以及link标签中的href属性(当rel设置成与图像相关的值,比如HTML支持的icon)

7)media-src:控制媒体类型的外部链入资源,如video, audio, source, 和track标签的src属性。

8)frame-src:控制内嵌框架包含的外部页面连接:iframe or a frame。

9)font-src:控制CSS中的@font-face

10)connect-src:控制XMLHttpRequest中的open(),WebSocket,EventSource

11)inline script和eval类型函数(包括eval、setInterval、setTimeout和new Function())是不被执行的。另外data URIs也是默认不允许使用的,XBL,只允许通过chrome:和resource:形式uri请求的XBL,其它的比如在CSS中通过-moz-binding来指定的XBL则不允许被执行。