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