CA5368 : Définir ViewStateUserKey pour les classes dérivées de Page
Propriété | Value |
---|---|
Identificateur de la règle | CA5368 |
Titre | Définir ViewStateUserKey pour les classes dérivées de Page |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
La propriété Page.ViewStateUserKey n’est pas affectée dans Page.OnInit ou la méthode Page_Init
.
Description de la règle
Lors de la conception d’un formulaire web ASP.NET, n’oubliez pas les attaques de falsification de requête intersite (CSRF). Une attaque CSRF peut envoyer des requêtes malveillantes d’un utilisateur authentifié à votre formulaire web ASP.NET.
Une façon de se protéger contre les attaques CSRF dans un formulaire web ASP.NET le ViewStateUserKey d’une page sur une chaîne imprévisible et unique à une session. Pour plus d’informations, consultez Utilisation des fonctionnalités intégrées ASP.NET pour repousser les attaques web.
Comment corriger les violations
Définissez la propriété ViewStateUserKey sur une chaîne imprévisible et unique par session. Par exemple, si vous utilisez l’état de session ASP.NET, HttpSessionState.SessionID fonctionnera.
Quand supprimer les avertissements
Il est sûr de supprimer un avertissement de cette règle si :
- La page de formulaire web ASP.NET n’effectue pas d’opérations sensibles.
- Les attaques de falsification de requêtes intersite sont atténuées d’une manière que cette règle ne détecte pas. Par exemple, si la page hérite d’une page master qui contient des défenses contre la falsification de requête intersites.
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 CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368
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.CA5368.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
}
}
Solution
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
// Assuming that your page makes use of ASP.NET session state and the SessionID is stable.
ViewStateUserKey = Session.SessionID;
}
}