CA5395: Ignorar o atributo HttpVerb para métodos de ação
Property | Valor |
---|---|
ID da regra | CA5395 |
Título | Ignorar o atributo HttpVerb para métodos de ação |
Categoria | Segurança |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 9 | Não |
Causa
Não especificar o tipo de solicitação HTTP explicitamente para métodos de ação.
Descrição da regra
Todos os métodos de ação que criam, editam, excluem ou modificam dados precisam ser protegidos com o atributo antifalsificação de ataques de solicitação intersite forjada. A execução de uma operação GET deve ser segura, não tem efeitos colaterais e não modifica os dados persistentes.
Como corrigir violações
Marque os métodos de ação com o atributo HttpVerb
.
Quando suprimir avisos
É seguro suprimir avisos dessa regra se:
- Você tiver certeza de que nenhuma operação de modificação está ocorrendo no método de ação. Ou ela não for um método de ação.
- Soluções diferentes do uso de atributos de token antifalsificação adotadas para mitigar vulnerabilidades de CSRF. Para obter mais informações, consulte Impedir ataques de XSRF/CSRF (solicitação intersite forjada) no ASP.NET Core.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
Violação
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Solução
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}