XSS防御之CSP原理学习
CSP(Content Security Policy)指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。
CSP 本质上是建立白名单,规定了浏览器只能够执行特定来源的代码;即使发生了xss攻击,也不会加载来源不明的第三方脚本。
在网页中,CSP可以通过 HTTP 头信息或者 meta 元素定义。
CSP虽然提供了强大的安全保护,但是他也造成了如下问题:Eval及相关函数被禁用、内嵌的JavaScript代码将不会执行、只能通过白名单来加载远程脚本。
(1)使用HTTP的 Content-Security-Policy
头部
在服务器端使用 HTTP的 Content-Security-Policy头部来指定你的策略
只能从同域下加载 :
Content-Security-Policy: default-src 'self'
Content-Security-Policy-Report-Only
:收集报告,但没有限制请求
(2)使用meta标签
限制表单:
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">