CA5365 : Ne pas désactiver la vérification des en-têtes HTTP

Propriété Value
Identificateur de la règle CA5365
Titre Ne pas désactiver la vérification des en-têtes HTTP
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Définissez EnableHeaderChecking sur false.

Description de la règle

La vérification de l’en-tête HTTP permet l’encodage des caractères de retour chariot et de nouvelle ligne, \r et \n, qui se trouvent dans les en-têtes de réponse. Cet encodage peut aider à éviter les attaques par injection qui exploitent une application qui renvoie des données non approuvées contenues dans l’en-tête.

Comment corriger les violations

Définissez EnableHeaderChecking sur true. Vous pouvez également supprimer l’affectation à false, car la valeur par défaut est true.

Quand supprimer les avertissements

Les continuations d’en-tête HTTP s’appuient sur des en-têtes couvrant plusieurs lignes et nécessitent de nouvelles lignes. Si vous devez utiliser des continuations d’en-tête, vous devez définir la propriété EnableHeaderChecking sur false. La vérification des en-têtes a un impact sur les performances. Si vous êtes certain que vous effectuez déjà les vérifications appropriées, la désactivation de cette fonctionnalité pourrait améliorer les performances de votre application. Avant de désactiver cette fonctionnalité, assurez-vous que vous prenez déjà les précautions appropriées dans ce domaine.

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 CA5365
// The code that's violating the rule is on this line.
#pragma warning restore CA5365

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.CA5365.severity = none

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

Exemples de pseudo-code

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = false;
    }
}

Solution

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = true;
    }
}