Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Proprietà | valore |
---|---|
ID regola | CA5382 |
Title | Usa cookie protetti in ASP.NET Core |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
La Microsoft.AspNetCore.Http.CookieOptions.Secure proprietà viene impostata come false
quando si richiama Microsoft.AspNetCore.Http.IResponseCookies.Append. Per il momento, questa regola esamina solo la classe Microsoft.AspNetCore.Http.Internal.ResponseCookies, che è una delle implementazioni di IResponseCookies.
Questa regola è simile a CA5383, ma l'analisi può determinare che la Secure proprietà è impostata false
o meno.
Per impostazione predefinita, questa regola analizza l'intera codebase, ma è configurabile.
Le applicazioni disponibili su HTTPS devono usare cookie sicuri, che indicano al browser che il cookie deve essere trasmesso solo tramite Transport Layer Security (TLS).
Impostare la Secure proprietà su true
.
Se i cookie sono configurati per essere protetti per impostazione predefinita, ad esempio usando Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware in
Startup.Configure
:C#public class Startup { public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseCookiePolicy( new CookiePolicyOptions { Secure = CookieSecurePolicy.Always }); } }
Se si è certi che non sono presenti dati sensibili nei cookie.
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 CA5382
// The code that's violating the rule is on this line.
#pragma warning restore CA5382
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.CA5382.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Usare le opzioni seguenti per configurare le parti della codebase in cui eseguire questa regola.
È possibile configurare queste opzioni solo per questa regola, per tutte le regole a cui si applicano o per tutte le regole di questa categoria (Sicurezza) a cui si applicano. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.
È possibile escludere simboli specifici, ad esempio tipi e metodi, dall'analisi impostando l'opzione excluded_symbol_names. Ad esempio, per specificare che la regola non deve essere eseguita in alcun codice all'interno di tipi denominati MyType
, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType
Nota
Sostituire la parte XXXX
di CAXXXX
con l'ID della regola applicabile.
Formati di nome simbolo consentiti nel valore dell'opzione (separati da |
):
- Solo nome simbolo (include tutti i simboli con il nome, indipendentemente dal tipo o dallo spazio dei nomi contenitore).
- Nomi completi nel formato ID della documentazione del simbolo. Ogni nome di simbolo richiede un prefisso di tipo simbolo, ad esempio
M:
per i metodi,T:
per i tipi eN:
per gli spazi dei nomi. -
.ctor
per costruttori e.cctor
per costruttori statici.
Esempi:
Valore opzione | Riepilogo |
---|---|
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType |
Corrisponde a tutti i simboli denominati MyType . |
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2 |
Corrisponde a tutti i simboli denominati MyType1 o MyType2 . |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS.MyType.MyMethod(ParamType) |
Corrisponde a un metodo MyMethod specifico con la firma completa specificata. |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType) |
Trova la corrispondenza con metodi MyMethod1 specifici e MyMethod2 con le rispettive firme complete. |
È possibile escludere tipi specifici e i relativi tipi derivati dall'analisi impostando l'opzione excluded_type_names_with_derived_types. Ad esempio, per specificare che la regola non deve essere eseguita in alcun metodo all'interno di tipi denominati MyType
e dei relativi tipi derivati, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType
Nota
Sostituire la parte XXXX
di CAXXXX
con l'ID della regola applicabile.
Formati di nome simbolo consentiti nel valore dell'opzione (separati da |
):
- Solo nome di tipo (include tutti i tipi con il nome, indipendentemente dal tipo o dallo spazio dei nomi contenitore).
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo
T:
.
Esempi:
Valore opzione | Riepilogo |
---|---|
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType |
Corrisponde a tutti i tipi denominati MyType e a tutti i relativi tipi derivati. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2 |
Corrisponde a tutti i tipi denominati MyType1 o MyType2 e a tutti i relativi tipi derivati. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS.MyType |
Corrisponde a un tipo MyType specifico con il nome completo specificato e tutti i relativi tipi derivati. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2 |
Corrisponde a tipi MyType1 specifici e MyType2 con i rispettivi nomi completi e tutti i relativi tipi derivati. |
Il frammento di codice seguente illustra il modello rilevato da questa regola.
Violazione:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
class ExampleClass
{
public void ExampleMethod(string key, string value)
{
var cookieOptions = new CookieOptions();
cookieOptions.Secure = false;
var responseCookies = new ResponseCookies(null, null);
responseCookies.Append(key, value, cookieOptions);
}
}
Soluzione:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal;
class ExampleClass
{
public void ExampleMethod(string key, string value)
{
var cookieOptions = new CookieOptions();
cookieOptions.Secure = true;
var responseCookies = new ResponseCookies(null, null);
responseCookies.Append(key, value, cookieOptions);
}
}
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: