有一些很好的文章解释了 CSP 的选项,例如: http://www.html5rocks.com/en/tutorials/security/content-security-policy/
也许这很明显,因为我找不到任何好的示例,但您如何在实践中实际实现 CSP?
在 PHP 中,您可以在您提供的页面上设置 header ,但是如果您只有一个 HTML 文件怎么办?你必须通过你的网络服务器、apache 或类似的东西来做吗?这似乎不是一个简单的方法。
此处的最佳做法是什么?提供的每个单独页面都应该手动设置标题吗?
谢谢!
最佳答案
归根结底,选择权在您。 您可以在您的 apache 网络服务器中全局设置它。在这种情况下,它将应用于每个页面。 如果需要更精细的方法,您还可以在各个页面上设置标题。
检查这些站点以帮助构建您的 CSP 规则:
https://csp-evaluator.withgoogle.com/
https://report-uri.io/home/generate
Scott Helme 对这个主题了解很多,也有一些很好的例子。 您也可以将报告发送到他的网站进行一些基本分析。
https://scotthelme.co.uk/content-security-policy-an-introduction/
这也可能对 apache 配置感兴趣
Generate a nonce with Apache 2.4 (for a Content Security Policy header)
我还强烈建议您阅读这篇论文,其中讨论了一些更新的(并且看起来更简单的)配置方法和浏览器向后兼容性
https://www.websec.be/blog/cspstrictdynamic/
这也是一篇优秀的论文“CSP 已死,CSP 万岁!”来自谷歌研究,特别是引用第 4 节。通过绕过白名单和传播信任来改进 CSP。
https://research.google.com/pubs/pub45542.html
做大量阅读,当您准备好实现时,使用 REPORT ONLY 模式指令,这样您就可以在不执行策略的情况下获得控制台消息。
Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>
一旦你开心了,你就可以执行规则了:
Content-Security-Policy: <policy-directive>; <policy-directive>
关于php - 如何实现内容安全策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715989/