我有一个庞大的遗留代码库,我想将其引入Content-Security-Policy
标头打开。短期内想要真正锁定站点是不可行的(例如,到处都是内联脚本,没有自动化测试覆盖),但至少我可以从禁止访问我知道的内容源开始目前肯定没有使用,然后随着时间的推移慢慢减少。
不幸的是,未使用的来源列表相当短。这是我第一次尝试Content-Security-Policy
value:
default-src * 'unsafe-eval' 'unsafe-inline'
这破坏了很多事情,例如使用数据来源的图像:方案。环顾四周,我看到您可能想要包括的一些内容, 例如connect-src ws:
,没有明确指出the docs.
最大允许值是多少Content-Security-Policy
标头值基本上可以让网站执行浏览器默认允许执行的所有操作?另一种方式问:我可以引入什么标头值,并且绝对不会破坏网站上的任何内容?
如果我可以从我知道不会破坏任何内容的内容开始,然后减去我知道可以安全删除的权限,那么将标头引入旧站点会更舒服。
tl;dr 使用“仅报告”模式向旧站点引入策略。
请参阅 w3.org/TR/CSP2/#source-list-guid-matching。
如上所述,引用特定片段的特殊 URL 方案
独特的内容,例如“数据:”,“blob:”和“文件系统:”
排除在匹配 * 策略之外,并且必须明确列出。
因此,类似的事情default-src * 'unsafe-eval' 'unsafe-inline' 'unsafe-dynamic' data: filesystem: about: blob: ws: wss:
可能已经接近最宽松的政策了。当然,还有更多协议可能需要列入白名单。
HOWEVER
通常人们会采取相反的方法。他们将部署标头Content-Security-Policy-Report-Only: default-src 'none'
这不会影响您网站的加载,并且允许您根据违规或控制台警告逐步降低您的政策。
我强烈建议您从caspr 镀铬扩展创建初始策略,然后使用 report-uri.io 查看报告违规行为。当您的策略看起来稳定并且违规行为最少时,请将您的策略切换到强制模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)