如何使用 Apache httpd.conf 和 mod_cspnonce 替换 Angular index.html 中的 CSP nonce 值?

问题描述 投票:0回答:1

尝试使用 mod_cspnonce 模块在 apache httpd 服务器上托管的 Angular 应用程序中设置 CSP nonce。

能够构建以下策略,并且可以看到响应标头包含正确的随机数值。

Header set Content-Security-Policy "default-src 'self'; script-src http: https: 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' 'nonce-%{CSP_NONCE}e'"

Nonce received in response header

但是,我无法使用 httpd.conf 在 index.html 中替换或设置相同的随机数。

index.html

<script src="https://../example1.js" nonce="CSP_NONCE"></script>
<script src="https://../example2.js" nonce="CSP_NONCE"></script>
<script src="https://../example3.js" nonce="CSP_NONCE"></script>

我尝试了几个选项来替换csplite

中提到的index.html中的CSP_NONCE关键字
<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|CSP_NONCE|nonce-%{CSP_NONCE}e|i"
</Location>
<Directory "/">
    AddOutputFilter Sed html
    OutputSed "s/CSP_NONCE/nonce-%{CSP_NONCE}e/g"
</Directory>

这两个选项仅在响应中返回字符串文字,而不是预期的替换随机数值。

参考资料:

https://csplite.com/csp220

https://github.com/wyday/mod_cspnonce

任何建议都会有帮助!

angular apache content-security-policy httpd.conf nonce
1个回答
0
投票

我遇到了同样的问题,我参考了https://serverfault.com/questions/799139/how-to-use-env-in-mod-substitute作为解决方案。

我将当前的替代品重写为这个

<Location "/">
    SetOutputFilter INFLATE;DEFLATE
    AddOutputFilterByType SUBSTITUTE;INCLUDES text/html

    Options Includes

    Substitute "s/{SERVER-CSP-NONCE}/<!--#echo var=\"CSP_NONCE\" -->|ni"
</Location>

现在似乎正在发挥作用。希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.