Mic*_*pat 4 content-security-policy
我有一个庞大的遗留代码库,我想引入Content-Security-Policy标题.在短期内真正锁定网站是不可行的(例如,整个地方都有没有自动化测试覆盖的内联脚本),但至少我可以开始禁止访问我知道的内容源当然,目前还没有使用,然后随着时间的推移慢慢减速.
不幸的是,未使用的源列表相当短.这是我第一次尝试Content-Security-Policy价值:
default-src * 'unsafe-eval' 'unsafe-inline'
Run Code Online (Sandbox Code Playgroud)
这破坏了许多事情,例如使用data:scheme获取的图像.环顾四周,我看到了许多您可能想要包含的内容,例如connect-src ws:,未在文档中明确指出的内容.
什么是最大允许Content-Security-Policy标头值,基本上允许网站执行浏览器默认允许执行的所有操作?问另一种方式:我可以介绍什么标题值,绝对不会破坏网站上的任何东西?
如果我可以从我知道不会破坏任何东西的东西开始,然后减去我知道可以安全删除的权限,我会觉得将标题引入遗留站点更为舒服.
tl; dr使用"仅报告"模式将策略引入旧站点.
请参阅w3.org/TR/CSP2/#source-list-guid-matching.
如上所述,引用特定内容的特殊URL方案(例如"data:","blob:"和"filesystem:")不匹配*的策略,必须明确列出.
因此,类似的东西default-src * 'unsafe-eval' 'unsafe-inline' 'unsafe-dynamic' data: filesystem: about: blob: ws: wss:可能接近最宽松的政策.当然,还有更多协议可能需要列入白名单.
然而
通常人们采取相反的方法.他们将部署标题,Content-Security-Policy-Report-Only: default-src 'none'不会影响您网站的加载,并允许您根据违规或控制台警告来降低策略.
我强烈建议您从caspr chrome扩展开始创建初始策略,然后使用report-uri.io查看报告违规.当您的策略看起来稳定并且违规很少时,请将策略切换为强制模式.
尝试
default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval' 'unsafe-dynamic';
script-src * 'unsafe-inline' 'unsafe-eval';
connect-src * 'unsafe-inline';
img-src * data: blob: 'unsafe-inline';
frame-src *;
style-src * data: blob: 'unsafe-inline';
font-src * data: blob: 'unsafe-inline';
Run Code Online (Sandbox Code Playgroud)
即使这样,你仍然可能会发现违规行为,如果你发现了,请向我举报!
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |