内容安全策略(CSP),是一种安全策略,其原理是当浏览器请求某一个网站时,告诉该浏览器申明文件可以执行,什么不可以执行。CSP是专门解决XSS攻击而生的神器。 CSP的引入会使得我们的引入扩展程序更加安全,并且可以由开发者指定可以加载扩展程序的类型,避免恶意的脚本在浏览器中执行,造成信息泄露问题。
CSP是防XSS的利器,可以把其理解为白名单,开发者通过设置CSP的内容,来规定浏览器可以加载的资源,CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
配置好并启用后,不符合CSP的外部资源就会被阻止加载。
表示不执行限制选项,只是记录违反限制的行为。它必须与resport-uri选项配合使用
"Content-Security-Policy":策略
"Content-Security-Policy-Only":策略
Meta标签与HTTP头只是形式不同而已,但是表示的作用都是一致的,如果HTTP头与Meta定义同时存在,则优先采用HTTP中的定义 如果用户浏览器已经为当前文档执行了一个CSP的策略,则会跳过Meta标签的定义。如果Meta标签缺少content属性的时候也同样会跳过。
# 限制所有的外部资源,只能从当前域中加载。
Content-Security-policy:default-src "self"
# default-src是csp指令,多个指令之间使用;来隔离,多个指令值之间使用空格来分离。
Content-Security-policy:default-src https://host1.com https://host2.com; frame-src "none"; object-src "none"
# 错误写法,这样写第二个script-src指令将会被忽略
Content-Security-Policy: script-src https://host1.com; script-src https://host2.com
# 正确写法
Content-Security-Policy: script-src https://host1.com https://host2.com
# report-uri指令表示浏览器发送JSON格式的拦截报告到某一个地址。
Content-Security-Policy: default-src "self"; report-uri /my_amazing_csp_report_parser;
以下按照 指令 指令示例(指令、指令值)进行编排:
以下按照 指令值 指令值示例(指令、指令值)进行编排:
参考文章
https://blog.csdn.net/weixin_47450807/article/details/123224654