CA5396:將 HttpCookie 的 HttpOnly 設為 true
屬性 | 值 |
---|---|
規則識別碼 | CA5396 |
標題 | 將 HttpCookie 的 HttpOnly 設為 true |
類別 | 安全性 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | No |
原因
System.Web.HttpCookie.HttpOnly 設定為 false
。 此屬性的預設值為 false
。
檔案描述
作為深度防禦措施,請確定將安全性敏感性 HTTP Cookie 標示為 HttpOnly。 這表示網頁瀏覽器應該不允許指令碼存取 Cookie。 插入的惡意指令碼是竊取 Cookie 的常見方式。
如何修正違規
將 System.Web.HttpCookie.HttpOnly 設定為 true
。
隱藏警告的時機
如果 已設定 的全域值 HttpOnly ,例如在下列範例中:
<system.web> ... <httpCookies httpOnlyCookies="true" requireSSL="true" /> </system.web>
如果您確定 Cookie 中沒有敏感數據。
隱藏警告
如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。
#pragma warning disable CA5396
// The code that's violating the rule is on this line.
#pragma warning restore CA5396
若要停用檔案、資料夾或項目的規則,請在組態檔中將其嚴重性設定為 。none
[*.{cs,vb}]
dotnet_diagnostic.CA5396.severity = none
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。
範例
違反:
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = false;
}
}
解決方案:
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = true;
}
}