CA5368: Definir ViewStateUserKey para classes derivadas da página
Property | valor |
---|---|
ID da regra | CA5368 |
Título | Definir ViewStateUserKey para classes derivadas da página |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 9 | Não |
Motivo
A Page.ViewStateUserKey propriedade não é atribuída em Page.OnInit ou o Page_Init
método.
Descrição da regra
Ao criar um formulário da Web ASP.NET, esteja atento aos ataques de falsificação de solicitação entre sites (CSRF). Um ataque CSRF pode enviar solicitações maliciosas de um usuário autenticado para seu formulário da Web ASP.NET.
Uma maneira de se proteger contra ataques CSRF em ASP.NET formulário da Web é definindo uma página como uma cadeia de ViewStateUserKey caracteres imprevisível e exclusiva para uma sessão. Para obter mais informações, consulte Aproveite ASP.NET recursos internos para se defender de ataques da Web.
Como corrigir violações
Defina a ViewStateUserKey propriedade como uma cadeia de caracteres imprevisível e exclusiva por sessão. Por exemplo, se você usar ASP.NET estado de sessão, HttpSessionState.SessionID funcionará.
Quando suprimir avisos
É seguro suprimir um aviso desta regra se:
- A página ASP.NET formulário da Web não executa operações confidenciais.
- Os ataques de falsificação de solicitação entre sites são atenuados de uma forma que essa regra não deteta. Por exemplo, se a página herda de uma página mestra que contenha defesas CSRF.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5368.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
Violação
using System;
using System.Web.UI;
class ExampleClass : Page
{
protected override void OnInit (EventArgs e)
{
}
}
Solução
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;
}
}