CA5396 : Affecter la valeur true à HttpOnly pour HttpCookie

Propriété Value
Identificateur de la règle CA5396
Titre Affecter la valeur true à HttpOnly pour HttpCookie
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

System.Web.HttpCookie.HttpOnly est défini sur false. La valeur par défaut de cette propriété est false.

Description de la règle

En guise de mesure de défense en profondeur, assurez-vous que les cookies HTTP sensibles pour la sécurité sont marqués comme HttpOnly. Cela indique que les navigateurs web doivent interdire aux scripts d’accéder aux cookies. Les scripts malveillants injectés sont un moyen courant de voler des cookies.

Comment corriger les violations

Définissez System.Web.HttpCookie.HttpOnly sur true.

Quand supprimer les avertissements

  • Si la valeur globale de HttpOnly est définie, comme dans l’exemple suivant :

    <system.web>
        ...
        <httpCookies httpOnlyCookies="true" requireSSL="true" />
    </system.web>
    
  • Si vous êtes sûr qu’il n’y a pas de données sensibles dans les cookies.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Exemple

Violation :

using System.Web;

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

Solution :

using System.Web;

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