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