CA5396: HttpCookie için HttpOnly değerini true olarak ayarlayın
Özellik | Değer |
---|---|
Kural Kimliği | CA5396 |
Başlık | HttpCookie için HttpOnly'yi true olarak ayarla |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
System.Web.HttpCookie.HttpOnly olarak ayarlanır false
. Bu özelliğin varsayılan değeridir false
.
Kural açıklaması
Derinlemesine savunma önlemi olarak, güvenlik duyarlı HTTP tanımlama bilgilerinin HttpOnly olarak işaretlendiğinden emin olun. Bu, web tarayıcılarının betiklerin tanımlama bilgilerine erişmesine izin vermemesi gerektiğini gösterir. Eklenen kötü amaçlı betikler, tanımlama bilgilerini çalmanın yaygın bir yoludur.
İhlalleri düzeltme
System.Web.HttpCookie.HttpOnly seçeneğini true
olarak ayarlayın.
Uyarıların ne zaman bastırılması gerekiyor?
Genel değeri HttpOnly aşağıdaki örnekte olduğu gibi ayarlanmışsa:
<system.web> ... <httpCookies httpOnlyCookies="true" requireSSL="true" /> </system.web>
Tanımlama bilgilerinde hassas veriler olmadığından eminseniz.
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 CA5396
// The code that's violating the rule is on this line.
#pragma warning restore CA5396
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5396.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Örnek
Ihlal:
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = false;
}
}
Çözüm:
using System.Web;
class ExampleClass
{
public void ExampleMethod()
{
HttpCookie httpCookie = new HttpCookie("cookieName");
httpCookie.HttpOnly = true;
}
}