1
我已经实现了代码来管理我的应用程序中的内容安全策略层。 我的实现基于一个ActionFilterAttribute
,该代码受此处可用代码的启发(为了简单起见,我在该问题中包含了该代码)。Asp net核心内容安全策略实施
public override void OnResultExecuting(ResultExecutingContext context) {
var result = context.Result;
if (result is ViewResult) {
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options")) {
context.HttpContext.Response.Headers.Add("X-Content-Type-Options", "nosniff");
}
if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options")) {
context.HttpContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
}
var csp = "default-src *;";
// once for standards compliant browsers
if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy")) {
context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
}
// and once again for IE
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy")) {
context.HttpContext.Response.Headers.Add("X-Content-Security-Policy", csp);
}
}
}
然而,正如你可以从下面的图片看,我仍然可以在浏览器(Firefox样品中的)错误。这是显示这是目前的标头中的开发者控制台:
而这些控制台错误
什么我做错了,expecially在过去的三个误区安慰?
问题中的代码片段似乎表明您正在设置一个Content-Security-Policy:default-src *标题,但开发者控制台屏幕截图显示了Content-Security-Policy:script- src'self; style-src'self',img-src'self''。为什么? – sideshowbarker
看起来,将内容安全策略添加到头部的代码块(具有符合标准的浏览器一次注释的那个代码块)不会运行,因为密钥已经存在于头部中。虽然解决方案可能很简单,但我想知道是谁添加了它...... – Lorenzo
那么我现在还注意到,显示的控制台错误是针对也具有'script-src:https:// localhost:5000'的CSP头以及'style-src:https:// localhost:5000' ... – sideshowbarker