CA5396:将 HttpCookie 的 HttpOnly 设置为 true

属性
规则 ID CA5396
标题 将 HttpCookie 的 HttpOnly 设置为 true
类别 安全性
修复是中断修复还是非中断修复 非中断
在 .NET 8 中默认启用

原因

System.Web.HttpCookie.HttpOnly 设置为 false。 此属性的默认值为 false

规则说明

请确保将安全敏感的 HTTP Cookie 标记为 HttpOnly,这是一个深度防御措施。 这表明 Web 浏览器应禁止脚本访问 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;
    }
}