XSS终结者-CSP理论与实践
CSP 全称为 Content Security Policy,即内容安全战略。首要以白名单的方法装备可信任的内容来历,在网页中,能够使白名单中的内容正常履行(包括 JS,CSS,Image 等等),而非白名单的内容无法正常履行,然后削减跨站脚本进犯(XSS),当然,也能够削减运营商绑架的内容注入进犯。
示例:在 HTML 的 Head 中增加如下 Meta 标签,将在契合 CSP 规范的浏览器中使非同源的 script 不被加载履行。
不支持 CSP 的浏览器将主动会疏忽 CSP 的信息,不会有什么影响。详细兼容性可在caniuse检查
CSP 语法组成
战略类型
CSP 有两种战略类型:
Content-Security-Policy Content-Security-Policy-Report-Only
这两种战略类型的首要差异也能够从命名上看出,第一种对不安全的资源会进行阻挠履行,而第二种只会进行数据上报,不会有实践的阻挠。
当界说多个战略的时分,浏览器会优先选用最早界说的。
指令调集
CSP 的指令是组成内容来历白名单的要害,上面两种战略类型含有以下很多指令,能够经过调配得到满意网站资源来历的白名单。
指令示例及阐明
指令 取值示例 阐明 default-src 'self' cdn.example.com 界说针对一切类型(js/image/css/web font/ajax/iframe/多媒体等)资源的默许加载战略,某类型资源假如没有独自界说战略,就运用默许。 script-src 'self' js.example.com 界说针对JavaScript的加载战略 object-src 'self' 针对,, 等标签的加载战略 style-src 'self' css.example.com 界说针对款式的加载战略 img-src 'self' image.example.com 界说针对图片的加载战略 media-src 'media.example.com' 针对或许引进的html多媒体等标签的加载战略 frame-src 'self' 针对iframe的加载战略 connect-src 'self' 针对Ajax、WebSocket等恳求的加载战略。不答应的情况下,浏览器会模仿一个状况为400的呼应 font-src font.qq.com 针对Web Font的加载战略 sandbox allow-forms allow-scripts 对恳求的资源启用sandbox report-uri /some-report-uri 告知浏览器假如恳求的资源不被战略答应时,往哪个地址提交日志信息。不阻挠任何内容,能够改用Content-Security-Policy-Report-Only头 base-uri 'self' 约束当前页面的url(CSP2) child-src 'self' 约束子窗口的源(iframe、弹窗等),替代frame-src(CSP2) form-action 'self' 约束表单能够提交到的源(CSP2) frame-ancestors 'none' 约束了当前页面能够被哪些页面以iframe,frame,object等方法加载(CSP2) plugin-types application/pdf 约束插件的类型(CSP2)
指令值示例及阐明
指令值 示例 阐明 * img-src * 答应任何内容 'none' img-src 'none' 不答应任何内容 'self' img-src 'self' 答应同源内容 data: img-src data: 答应data:协议(如base64编码的图片) www.a.com img-src www.a.com 答应加载指定域名的资源 *.a.com img-src *.a.com 答应加载a.com任何子域的资源 https://img.com img-srchttps://img.com 答应加载img.com的https资源 https: img-src https: 答应加载https资源 'unsafe-inline' script-src 'unsafe-inline' 答应加载inline资源(style特点,onclick,inline js和inline css等等) 'unsafe-eval' script-src 'unsafe-eval' 答应加载动态js代码,例如eval()
[1] [2] [3] 黑客接单网