Ric*_*ard 5 php security content-security-policy
有一些很好的文章解释了 CSP 的选项,就像这样:http : //www.html5rocks.com/en/tutorials/security/content-security-policy/
也许这是完全显而易见的,因为我找不到任何好的例子,但是您如何在实践中实际实施 CSP?
在 PHP 中,您可以在您服务的页面上设置标题,但是如果您只有一个 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 配置感兴趣
使用 Apache 2.4 生成随机数(用于内容安全策略标头)
我还强烈建议您阅读本文,其中讨论了一些更新(且看起来更简单)的配置方法和浏览器向后兼容性
https://www.websec.be/blog/cspstrictdynamic/
这也是一篇优秀的论文“CSP Is Dead,Long Live CSP!” 来自 google 研究,特别参考第 4 节:通过绕过白名单和传播信任来改进 CSP。
https://research.google.com/pubs/pub45542.html
进行大量阅读,当您准备好实施时,请使用 REPORT ONLY 模式指令,这样您就可以在不执行策略的情况下获取控制台消息。
Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>
Run Code Online (Sandbox Code Playgroud)
一旦你高兴了,你就可以执行规则:
Content-Security-Policy: <policy-directive>; <policy-directive>
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个容易的方法。
是的,不是。不过,您可以采取一些巧妙的捷径。
您如何在实践中实际实施 CSP?
在 PHP 中,您可以在您提供的页面上设置标头,但如果您只有一个 HTML 文件怎么办?您必须通过网络服务器、apache 或类似服务器来完成此操作吗?这似乎不是一个容易的方法。
我编写了一个命令行 PHP 脚本,该脚本采用类似代码块 A 的 JSON blob 组装了一个类似于代码块 B 的字符串,并将其保存到单独的文件中。
A:
{
"script-src": [ "self", "https://apis.google.com" ]
}
Run Code Online (Sandbox Code Playgroud)
乙:
add_header Content-Security-Policy "script-src: 'self' https://apis.google.com";
Run Code Online (Sandbox Code Playgroud)
然后我添加了一行来配置该虚拟主机的 nginx 配置,以包含生成的 CSP 指令:
include /path/to/script/output.conf;
Run Code Online (Sandbox Code Playgroud)
由于该系统,如果我想更改 CSP 标头,我只需要编辑 JSON 文件。
这就是我如何使 CSP 标头易于管理。你的旅费可能会改变。
这是:CSP Builder。
归档时间: |
|
查看次数: |
19370 次 |
最近记录: |