CA5395: Falta el atributo HttpVerb para los métodos de acción
Propiedad | Value |
---|---|
Identificador de la regla | CA5395 |
Título | Falta el atributo HttpVerb para los métodos de acción |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
No se especifica el tipo de solicitud HTTP explícitamente para los métodos de acción.
Descripción de la regla
Todos los métodos de acción que crean, editan, eliminan o modifican de algún otro modo los datos deben protegerse con el atributo antifalsificación de los ataques de falsificación de solicitudes entre sitios. Realizar una operación GET debería ser una operación segura sin efectos secundarios, que no modifica los datos persistentes.
Cómo corregir infracciones
Marque los métodos de acción con el atributo HttpVerb
.
Cuándo suprimir las advertencias
Se pueden suprimir las advertencias de esta regla si:
- Está seguro de que no se está realizando ninguna operación de modificación en el método de acción. O no es un método de acción.
- Soluciones que no sean el uso de atributos de token antifalsificación para mitigar las vulnerabilidades de CSRF. Para obtener más información, vea Prevención de ataques de falsificación de solicitud entre sitios (XSRF/CSRF) en ASP.NET Core.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Ejemplos de pseudocódigo
Infracción
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Solución
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}