【问题标题】:Use Content Security Policy scipt-src sha feature with Apache HTTP Server将内容安全策略 scipt-src sha 功能与 Apache HTTP Server 一起使用
【发布时间】:2016-08-04 20:17:36
【问题描述】:

我正在使用 Apache 2.4,并且正在尝试实施内容安全策略。 我在 httpd.conf

中设置了以下标头
Header set Content-Security-Policy "default 'none'; script-src 'self'"

现在,我在 html 中使用 script 标记嵌入了 JavaScript 代码,如

<script>alert('Do something here')</script>

请注意,脚本标签包含有意义的 JS 代码,而不是我为示例目的而放置的警告内容。

现在,内容安全策略会阻止此类内联脚本。将这些列入白名单的一种方法是为上述脚本计算 SHA 哈希并将其显式传递到标头中

Header set Content-Security-Policy "default 'none'; script-src 'self' sha256-dhfds73748=="

这允许脚本运行。

现在我可以在构建时使用 grunt 为这些类型的脚本生成 SHA。

但是当我对这些脚本进行更改然后手动重新启动我的 Apache HTTP 服务器时,我是否必须在 Apache httpd.conf 中手动设置这些?

我可以在运行时在 Apache 配置中设置这个值吗?

请注意,我不想将此类代码移动到单独的 js 文件中 然后通过&lt;script src="path/to/my/file.js"&gt;&lt;/script&gt; 调用它,除非这是唯一可能的方法。

【问题讨论】:

    标签: javascript apache http-headers content-security-policy


    【解决方案1】:

    这是针对静态 html 还是 Web 应用程序?如果它是一个 Web 应用程序,动态策略相当容易。它是一个使用某种模板(例如 Jekyll)的静态站点,您可以使用 csp 元标记轻松更新策略。

    如果以上都不是,我将不得不遵从那些具有特定 Apache 经验的人。我不认为在许多静态页面上管理元标记是一个好方法。

    【讨论】:

    • 我正在使用单页 Web 应用程序架构
    • 元标记可能是当时的最佳选择。至少在您的开发环境中。
    • 太酷了!我不知道您可以直接在元标记中设置内容安全策略标头。非常感谢!
    • 它对可以使用哪些 CSP 功能有一些限制,但我不记得它们是什么。
    • 我只需要动态设置script-src和style-src即可。其余属性始终保持不变,并且只能通过 Apache 进行公平管理。谢谢。
    猜你喜欢
    • 2015-04-12
    • 2017-03-14
    • 2015-11-10
    • 2016-03-25
    • 2018-02-14
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多