CSP
可抵御威胁
XSS跨站脚本攻击
CSP 的主要目标是减少和报告 XSS 攻击 ,XSS 攻击利用了浏览器对于从服务器所获取的内容的信任。恶意脚本在受害者的浏览器中得以运行,因为浏览器信任其内容来源,即使有的时候这些脚本并非来自于它本该来的地方。
CSP通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。一个CSP兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他脚本 (包括内联脚本和HTML的事件处理属性)。
作为一种终极防护形式,始终不允许执行脚本的站点可以选择全面禁止脚本执行。
数据包嗅探攻击
除限制可以加载内容的域,服务器还可指明哪种协议允许使用;比如 (从理想化的安全角度来说),服务器可指定所有内容必须通过HTTPS加载。一个完整的数据安全传输策略不仅强制使用HTTPS进行数据传输,也为所有的cookie标记安全标识 cookies with the secure flag,并且提供自动的重定向使得HTTP页面导向HTTPS版本。网站也可以使用 Strict-Transport-Security HTTP头部确保连接它的浏览器只使用加密通道。
使用方法
通过配置 Content-Security-Policy
HTTP头部来控制浏览器(User Agent)可以为该页面获取哪些资源。例如,指定本页面图片来自某一指定域,限制页面脚本来自自身域,限制样式来自某指定CDN,限制表单action属性赋值指定端点等。
指定策略
Content-Security-Policy: policy
policy参数是一个由策略指令组成的字符串
描述策略
一个策略由一系列策略指令所组成,每个策略指令都描述了某种特定类型资源的来源以及生效范围。你的策略应当包含一个default-src策略指令,在其他资源类型没有符合自己的策略时应用该策略。一个策略可以包含 default-src 或者 script-src 指令来防止内联脚本运行, 并杜绝eval()的使用。 也可包含一个 default-src 或 style-src 指令去限制style的来源。