CA5395 : Attribut HttpVerb manquant pour les méthodes d’action
Propriété | Value |
---|---|
Identificateur de la règle | CA5395 |
Titre | Attribut HttpVerb manquant pour les méthodes d’action |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Ne pas spécifier explicitement le type de requête HTTP pour les méthodes d’action.
Description de la règle
Toutes les méthodes d’action qui créent, modifient, suppriment ou modifient des données doivent être protégées par l’attribut antifalsification contre les attaques par falsification de requête inter-site. Une opération GET doit être sûre, ne doit avoir aucun effet secondaire et ne doit pas modifier vos données persistantes.
Comment corriger les violations
Marquez les méthodes d’action avec l’attribut HttpVerb
.
Quand supprimer les avertissements
Vous pouvez sans risque supprimer les avertissements de cette règle si :
- Vous êtes sûr qu’aucune opération de modification n’a lieu dans la méthode d’action. Ou bien il ne s’agit pas du tout d’une méthode d’action.
- Des solutions autres que l’utilisation d’attributs de jeton antifalsification sont adoptées pour atténuer les vulnérabilités de falsification de requête intersites. Pour plus d’informations, consultez Prévenir les attaques par falsification de requête intersites (XSRF/CSRF) dans ASP.NET Core.
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 CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
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.CA5395.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Solution
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}