我正在尝试将内容安全策略添加到 Windows 2019 服务器上的 IIS。我曾经发布过类似的内容,但发现我走错了路。在 IIS 中,我将转到 HTTP 响应标头,单击 [添加],然后将“Content-Security-Policy”放入“名称”中,并将“default-src 'self';”在价值中。但是当它保存在 IIS 中时,内联脚本或样式都不起作用,页面也变得一团糟。
我在 https://content-security-policy.com 上找到了示例和解释,它提供了描述和正确的语法,不仅允许内联 css,还允许来自服务器的脚本、图像等:
"The default-src directive defines the default policy for fetching resources such as JavaScript, Images, CSS, Fonts, AJAX requests, Frames, HTML5 Media."
EXAMPLE DEFAULT-SRC POLICY
default-src 'self' cdn.example.com;
"default-src 'self' Allows loading resources from the same origin (same scheme, host and port)."
因此,在 IIS 中我将内容安全策略修改为:
default-src 'self' www.mydomainname.net;
但是我的网页仍然忽略样式和脚本! 我在 IIS 中做错了什么,或者也许我只是不明白它应该如何工作? 通过添加此 Content-Security-Policy 值,它应该允许来自同一服务器的脚本和样式。 那么,为什么不呢?
但是当将其保存在 IIS 中时,内联脚本或样式都不起作用,并且页面一团糟。
我认为您可能会混淆内联脚本和外部脚本之间的区别。只需参考this doc并检查它们的区别:
简而言之,你提到的配置主要是针对外部脚本的。在这种情况下,对于内联 javascript/style,您需要在 CSP 标头中添加以下值:
script-src 'unsafe-inline'; style-src 'unsafe-inline';