Udostępnij za pośrednictwem


CA5396: Ustaw wartość HttpOnly na wartość true dla elementu HttpCookie

Właściwości Wartość
Identyfikator reguły CA5396
Tytuł Ustaw element HttpOnly na wartość true dla elementu HttpCookie
Kategoria Bezpieczeństwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Nie.

Przyczyna

System.Web.HttpCookie.HttpOnly jest ustawiona na falsewartość . Wartość domyślna tej właściwości to false.

Opis reguły

W ramach ochrony w głębi systemu upewnij się, że poufne pliki cookie HTTP są oznaczone jako HttpOnly. Oznacza to, że przeglądarki internetowe nie powinny zezwalać skryptom na dostęp do plików cookie. Wstrzyknięte złośliwe skrypty są typowym sposobem kradzieży plików cookie.

Jak naprawić naruszenia

Ustaw wartość opcji System.Web.HttpCookie.HttpOnly na true.

Kiedy pomijać ostrzeżenia

  • Jeśli ustawiono wartość HttpOnly globalną elementu , na przykład w poniższym przykładzie:

    <system.web>
        ...
        <httpCookies httpOnlyCookies="true" requireSSL="true" />
    </system.web>
    
  • Jeśli masz pewność, że w plikach cookie nie ma żadnych poufnych danych.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA5396
// The code that's violating the rule is on this line.
#pragma warning restore CA5396

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA5396.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykład

Naruszenie:

using System.Web;

class ExampleClass
{
    public void ExampleMethod()
    {
        HttpCookie httpCookie = new HttpCookie("cookieName");
        httpCookie.HttpOnly = false;
    }
}

Rozwiązanie:

using System.Web;

class ExampleClass
{
    public void ExampleMethod()
    {
        HttpCookie httpCookie = new HttpCookie("cookieName");
        httpCookie.HttpOnly = true;
    }
}