我必须修复Classic ASP应用程序的Missing Content Security Policy Header问题。我们在Web.config中添加了以下内容
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src" />
</customHeaders>
</httpProtocol>
</system.webServer>
在IE中发布更改应用程序正在运行,但在Mozilla和Chrome中,应用程序无法正常呈现(css未正确加载)。
如果我也会在特定的asp页面中添加相同的内容(Response.AddHeader“Content-Security-Policy”,“default-src”),则会出现同样的问题。
请告知。
答案 0 :(得分:0)
您可能希望更好地熟悉CSP(内容安全策略)的功能。从安全角度来看,实际上是一个好主意。
在未明确设置策略的情况下激活策略(在本例中为“default-src”)与将其设置为“none”相同。那么你的设置是什么......
<add name="Content-Security-Policy" value="default-src" />
...告诉浏览器不接受来自任何来源的资源。您已经说过此页面的默认允许来源是“none”。没有链接图像,没有CSS,没有脚本。你已经全力以赴。
更好的默认值可能是:default-src self;
这将允许您链接到同一域上的CSS和JS文件。可能会添加style-src self unsafe-inline;
,但我不会对script-src
推荐相同内容。
这完全取决于您的网站当然。如果您使用内联<script>
和<style>
标记,请查看CSP nonces - 它们非常易于使用,并且比unsafe-inline
更安全。如果您的页面上堆满了“onclick”,则必须进行一些清理。 (这种类型的编码已经被劝阻了十多年,但你可能正在处理旧代码,就像我每天都做的那样。)
就个人而言,我没有在服务器级别设置它。我在PHP中设置它,如果某个特定页面出于某种原因需要更宽松的安全性(例如使用谷歌图表,由于eval()
语句需要非常松散的CSP,这允许灵活性。)好吧,那你又不能使用服务器级别的nonce,因为它们必须与页面同时生成。