如何修复网站缺失的内容安全策略
内容安全策略是什么?
内容安全策略(Content-Security-Policy)是一个安全头部,可以(且应该)包含在网站服务器与客户端的通信中。当用户访问您的网站时,头部用于客户端和服务器交换有关浏览会话的信息。这通常都是在用户不知情的情况下在后台完成的。其中一些头部可以改变用户体验,而另一些(如内容安全策略)则会影响Web浏览器如何处理网页上加载某些资源(如CSS文件、JavaScript、图像等)的方式。
内容安全策略告诉Web浏览器哪些资源位置被Web服务器信任并且可以加载。如果通过中间人攻击(MiTM)或动态代码将来自不受信任位置的资源添加到网页中,浏览器将知道该资源不受信任,并且无法处理该资源。
检查是否已启用内容安全策略
如果您以前没有听说过这些头部,那么可能没有启用它们。它们不是自动启用的。快速检查的方法是访问www.securityheaders.io并扫描您的网站。您也可以在FireFox的开发人员控制台中进行检查。
识别您的可信来源
在我们的案例中,我们需要识别可信的资源来源。使用FireFox的“开发人员模式”很容易做到这一点。我们加载了我们的网页,设置了内容安全策略,并查看了开发人员面板中的控制台产生了多少错误。每个错误都是对我们内容安全策略的违反。我们使用这些信息在策略中包含其他来源,直到所有内容都正确加载。
与您的Web开发人员协商,因为他们可能能够为您提供应受信任的所有源位置的列表。
在Apache中创建和配置内容安全策略
我们需要添加的头部将添加到httpd.conf文件中(或者apache.conf等)。
在httpd.conf中,找到您的VirtualHost部分。
接下来,找到您的<IfModule headers_module>
部分。如果它不存在,您需要创建它并添加我们的特定头部。
|
|
重启Apache
|
|
测试更改!
哇,看起来我们还有一些需要信任的来源。注意高亮显示的部分。
使用更多来源更新该头部设置
|
|
更改后不要忘记重新启动Apache。
很快,您将使用内容安全策略和可信来源正确配置您的页面。请注意,刷新后FireFox开发人员控制台中的资源错误现已清除。
头部设置内容安全策略
Scott Helme @Scott_Helme 进行了大量研究,并帮助为Web开发人员全面实施内容安全策略铺平了道路。以下是Scott整理的一些优秀内容,以帮助正确实施内容安全策略。
内容安全策略介绍 - 链接:https://scotthelme.co.uk/content-security-policy-an-introduction/
内容安全策略备忘单 - 链接:https://scotthelme.co.uk/csp-cheat-sheet/
即将推出:配置引用策略!