我可能需要一些使用perl正则表达式的帮助。
我想修改apache webserver的content-security-policy(csp)头文件。标题实际上已经由我的nextcloud实例设置,但我对那里的内容不满意。所以我决定修改(而不是替换)标题。 到目前为止,我尝试在我的apache配置中使用以下内容:
Header edit Content-Security-Policy ^default-src\s'self'* "default-scr 'self' 'test'"
到目前为止,这么好。不幸的是,这只有在我想要替换我的csp的第一个条目时才有效,但我想要做的是更改第二个条目
default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-abc...'
应该成为
default-src 'self'; script-src 'self' 'unsafe-inline' 'nonce-abc...'
根据documentation我要使用perl样式的正则表达式。我不知道这些工作如何,并尝试类似vim的语法没有帮助。所以请帮我正确掌握命令。非常感谢!
编辑: 为了提供更多信息,我的标题看起来像
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-SU5kR1FZUGU5UW9jY2toRFh6VGR5a0hGMTFCY3ltL2d4RkN1QlFKaXJzST06U0w4MUJkZVJ4eUZaV1gwUGNGMkZoZ3UwbUdacG5oblFnbnZZWmxzUHpKTT0='; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *
其中nonce在每个连接上都会发生变化,因此对标头进行硬编码不起作用。
答案 0 :(得分:1)
假设您的示例更改是更正,而不是示例编辑行:
Header edit Content-Security-Policy "^(script-src.*? )'unsafe-eval'" "\1'unsafe-inline`"