Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | valor |
|---|---|
| ID da regra | CA5395 |
| Título | Falta o atributo HttpVerb nos métodos de ação |
| Categoria | Segurança |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Não |
| Línguas aplicáveis | C# e Visual Basic |
Motivo
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, eliminam ou modificam dados precisam ser protegidos com o atributo antifalsificação contra ataques de falsificação de pedidos entre sites. Executar uma operação GET deve ser uma operação segura que não tenha efeitos colaterais e não modifique seus dados persistentes.
Como corrigir violações
Marque os métodos de ação com HttpVerb atributo.
Quando suprimir avisos
É seguro suprimir avisos desta regra se:
- Você tem certeza de que nenhuma operação de modificação está ocorrendo no método de ação. Ou então, não é realmente um método de ação.
- Outras soluções além do uso de atributos de token antifalsificação são adotadas para mitigar as vulnerabilidades do CSRF. Para obter mais informações, consulte Prevenir ataques de falsificação de solicitação entre sites (XSRF/CSRF) no ASP.NET Core.
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 CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Para obter mais informações, consulte 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;
}
}