分享方式:


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;
    }
}