CA5395: Attributo HttpVerb mancante per i metodi di azione
Proprietà | valore |
---|---|
ID regola | CA5395 |
Title | Attributo HttpVerb mancante per i metodi di azione |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Non specificando il tipo di richiesta HTTP in modo esplicito per i metodi di azione.
Descrizione regola
Tutti i metodi di azione che creano, modificano, eliminano o modificano i dati devono essere protetti con l'attributo antiforgery dagli attacchi di richiesta intersito falsi. L'esecuzione di un'operazione GET deve essere un'operazione sicura che non ha effetti collaterali e non modifica i dati persistenti.
Come correggere le violazioni
Contrassegnare i metodi di azione con HttpVerb
l'attributo .
Quando eliminare gli avvisi
È possibile eliminare gli avvisi da questa regola se:
- Si è certi che non venga eseguita alcuna operazione di modifica nel metodo di azione. In alternativa, non è un metodo di azione.
- Le soluzioni diverse dall'uso degli attributi del token antiforgery vengono adottate per attenuare le vulnerabilità CSRF. Per altre informazioni, vedere Prevenire attacchi tramite richieste intersito false (XSRF/CSRF) in ASP.NET Core.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Esempi di pseudo-codice
Violazione
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
Soluzione
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}