使用 Apache HTTP Server 的内容安全策略 scipt-src sha 功能

Use Content Security Policy scipt-src sha feature with Apache HTTP Server

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

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

现在,我在 html 内使用 script 标记内联 javascript 代码,如

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

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

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

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

这允许脚本 运行。

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

但是我是否必须在 Apache httpd.conf 中手动设置这些脚本,因为我更改了这些脚本,然后手动重启了我的 Apache HTTP 服务器?

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

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

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

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