1,背景
跨域脚本攻击,网络安全漏洞,于是就有了内容安全防护策略,从根本上解决这个问题。
2,启用CSP的方式有两种
a, 修改meta标签,http-equive
b, 服务器响应头设置
3,主要的CSP策略有5种
res.writeHead(200, {
'Content-Type': 'text-html', 'Content-Security-Policy': 'default-src http: https:' });
a, 不允许使用内联脚本或样式
'Content-Security-Policy': 'default-src http: https:'
b, 允许加载指定域名下的文件资源
'Content-Security-Policy': 'default-src \'self\''
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/'
c, 防止表单提交时访问站点
<form action="https://baidu.com"> 会跳转到百度页面 <button>click me</button> </form>
'Content-Security-Policy': 'default-src \'self\' https://cdn.bootcss.com/; form-action \'self\''
d,
default-src
设置的是全局,如果我只想限制js的请求,可以将default-src
改为
script-src
'Content-Security-Policy': 'script-src http: https:'
e, 设置响应报告,浏览器会给服务器 主动发送 report api的请求,返回具体的违背信息。限制的同时一起发送报告
'Content-Security-Policy': 'script-src \'self\'; report-uri /report'
d, 仅仅发送报告,不执行CSP策略
Content-Security-Policy-Report-Only
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">
和服务端设置效果相同,但不能发送报告。
CSP详细策略可参考HTML5开发规范 新标签打开。