Issue
ASP.NET Core Web 專案中,加入許多 Header 時,其中包含Content-Security-Policy,
被 Checkmarx 掃出有Permissive Content Security Policy的問題,程式碼如下,
1 | context.Response.Headers.Add("X-Content-Security-Policy", "default-src 'self' http://localhost:61161; img-src 'self' blob: data:; frame-ancestors 'self'; form-action 'self'; object-src 'none';"); |
但 Checkmarx 指的位置卻是在context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
context.Response.Headers.Add("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");
…其他非X-Content-Security-Policy
Header 的地方。
解法
查看 Checkmarx 的 Rule 會檢查是否有 Content-Security-Policy Header, 值是否有 default-src *
,form-action *
,frame-ancestors *
,才會有問題。
詢問同事 Jer 建議將 Content-Security-Policy 設定移到最後,以避免 Checkmarx 的誤判,
1 | context.Response.Headers.Add("X-Frame-Options", "DENY"); |
再掃一次就沒有Permissive Content Security Policy的問題了。
或是將context.Response.Headers.Add
改成context.Response.Headers.Append
也 OK 哦~
環境
- Checkmarx 版本:9.5.5.1007 HF14
- 類別:Permissive Content Security Policy
- 嚴重程度:低風險