什么是最大允许的内容安全策略?

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标头值,基本上允许网站执行浏览器默认允许执行的所有操作?问另一种方式:我可以介绍什么标题值,绝对不会破坏网站上的任何东西?

如果我可以从我知道不会破坏任何东西的东西开始,然后减去我知道可以安全删除的权限,我会觉得将标题引入遗留站点更为舒服.

ore*_*ake 7

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查看报告违规.当您的策略看起来稳定并且违规很少时,请将策略切换为强制模式.


Rai*_*inb 5

尝试

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)

即使这样,你仍然可能会发现违规行为,如果你发现了,请向我举报!

  • @AliGhasemzadeh 你能更具体一点吗,错误消息是什么?怎么不起作用呢? (2认同)

归档时间:

查看次数:

2013 次

最近记录:

7 年,10 月 前