缺少内容安全策略 header - chrome 和 firefox 的问题

Missing content security policy header - issue with chrome and firefox

我必须修复经典 ASP 应用程序丢失的内容安全策略 Header 问题。我们在 Web.config

中添加了以下内容
<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Content-Security-Policy" value="default-src" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

Post 更改在 IE 中应用程序正常运行,但在 Mozilla 和 Chrome 中应用程序未正确呈现(css 未正确加载)。

如果我也添加相同的特定 asp 页面(Response.AddHeader "Content-Security-Policy","default-src"),同样的问题也会发生。

请指教

您可能想更好地熟悉 CSP(内容安全策略)的作用。从安全的角度来看,这实际上是一个好主意。

在没有明确设置的情况下激活策略(在本例中为 "default-src")与将其设置为 "none" 相同。那么你的设置是做什么的...

<add name="Content-Security-Policy" value="default-src" />

...告诉浏览器不要接受来自任何 来源的资源。您说过此页面的默认允许来源是 "none"。没有 link 图片,没有 CSS,没有脚本。您已将其全部关闭。

更好的默认值可能是:default-src self;

这将允许您 link 到 CSS 和同一域中的 JS 文件。可能添加 style-src self unsafe-inline;,但我不建议 script-src.

当然,这完全取决于您的网站。如果您使用内联 <script><style> 标签,请查看 CSP 随机数——它们非常易于使用,并且比 unsafe-inline 更安全。如果您的页面上到处都是 "onclick",则您必须进行一些清理。 (十多年来一直不鼓励使用这种类型的编码,但您可能每天都在处理旧代码。)

就我个人而言,我不会在服务器级别进行设置。我将它设置在 PHP 中,如果某个特定页面出于某种原因需要更宽松的安全性(例如使用 Google 图表,由于 eval() 语句,它需要真正宽松的 CSP。)它允许灵活性。 ,并且您不能在服务器级别使用随机数,因为它们必须与页面同时生成。