Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA5383 |
| Başlık | ASP.NET Core'da güvenli çerezlerin kullanılmasını sağla |
| Kategori | Güvenlik |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Microsoft.AspNetCore.Http.IResponseCookies.Append çağrılırken Microsoft.AspNetCore.Http.CookieOptions.Secure özelliği false olarak ayarlanabilir. Şimdilik, bu kural yalnızca uygulamasından biri olan Microsoft.AspNetCore.Http.Internal.ResponseCookies sınıfına IResponseCookiesbakar.
Bu kural CA5382'ye benzer, ancak analiz özelliğin Secure kesin olarak false ayarlandığını veya ayarlanmadığını belirleyemez.
Varsayılan olarak, bu kural tüm kod tabanını analiz eder, ancak bu yapılandırılabilir.
Kural açıklaması
HTTPS üzerinden kullanılabilen uygulamalar, tarayıcıya tanımlama bilgisinin yalnızca Aktarım Katmanı Güvenliği (TLS) kullanılarak iletilmesi gerektiğini belirten güvenli tanımlama bilgileri kullanmalıdır.
İhlalleri düzeltme
Tüm durumlarda Secure özelliğini true olarak ayarlayın.
Uyarıların ne zaman bastırılması gerekiyor?
Tanımlama bilgileri varsayılan olarak güvenli olacak şekilde yapılandırılmışsa, örneğin Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware içinde kullanma
Startup.Configure:public class Startup { public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseCookiePolicy( new CookiePolicyOptions { Secure = CookieSecurePolicy.Always }); } }Tanımlama bilgilerinde hassas veri olmadığından emin iseniz.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA5383
// The code that's violating the rule is on this line.
#pragma warning restore CA5383
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5383.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Kod çözümleme için konfigüre et
Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçenekleri kullanın.
Bu seçenekleri yalnızca bu kural için, uyguladıkları tüm kurallar için veya bu kategorideki tüm kurallar için (Güvenlik) yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.
Belirli simgeleri hariç tutma
excluded_symbol_names seçeneğini ayarlayarak türler ve yöntemler gibi belirli simgeleri analizden hariç tutabilirsiniz. Örneğin, kuralın adlı MyTypetürlerdeki herhangi bir kodda çalışmaması gerektiğini belirtmek için, projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType
Not
XXXX
CAXXXX bölümünü geçerli kuralın kimliğiyle değiştirin.
Seçenek değerinde izin verilen simge adı biçimleri (ile |ayrılmış):
- Yalnızca sembol adı (içerildiği tür veya ad alanından bağımsız olarak ada sahip tüm simgeleri içerir).
- Simgelerin dökümantasyon kimliği formatındaki tam adlar. Her sembol adı için, yöntemler için
M:, türler içinT:, ve ad alanları içinN:gibi bir sembol türü ön eki gerekir. -
.ctoroluşturucular ve.cctorstatik oluşturucular için.
Örnekler:
| Seçenek Değeri | Özet |
|---|---|
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType |
adlı MyTypetüm simgelerle eşleşir. |
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2 |
MyType1 veya MyType2 adlı tüm simgelerle eşleşir. |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS.MyType.MyMethod(ParamType) |
Belirtilen tam imza ile belirli bir yöntemi MyMethod eşleştirir. |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType) |
Belirli yöntemlerle MyMethod1 ve MyMethod2 ilgili tam imzalarla eşleşir. |
Belirli türleri ve türetilmiş türlerini dışlama
excluded_type_names_with_derived_types seçeneğini ayarlayarak belirli türleri ve türetilmiş türlerini analizden dışlayabilirsiniz. Örneğin, kuralın adlı MyType ve türetilmiş türleri içindeki hiçbir yöntemde çalışmaması gerektiğini belirtmek için, projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType
Not
XXXX
CAXXXX bölümünü geçerli kuralın kimliğiyle değiştirin.
Seçenek değerinde izin verilen simge adı biçimleri (ile |ayrılmış):
- Yalnızca tür adı (içeren tür veya ad alanına bakılmaksızın adı olan tüm türleri içerir).
- Simgenin belge kimliği biçiminde, isteğe bağlı
T:ön ek içeren tam adlar.
Örnekler:
| Seçenek değeri | Özet |
|---|---|
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType |
Adı MyType olan tüm türleri ve türevlerini eşleştirir. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2 |
MyType1 veya MyType2 adlı tüm türleri ve bunların türetilmiş türlerinin tamamını eşleştirir. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS.MyType |
Belirli bir türü MyType verilen tam adla ve türetilmiş tüm türleriyle eşleştirir. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2 |
Belirli türler MyType1 ve MyType2 ile bunların türetilmiş tüm türleri, ilgili tam adlarla eşleşir. |
Örnek
Aşağıdaki kod parçacığı, bu kural tarafından algılanan deseni gösterir.
Ihlal:
using System;
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;
Random r = new Random();
if (r.Next(6) == 4)
{
cookieOptions.Secure = true;
}
var responseCookies = new ResponseCookies(null, null);
responseCookies.Append(key, value, cookieOptions);
}
}
Çözüm:
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);
}
}