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
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

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 ayarlandığından emin olun. Bu, web tarayıcılarının komut dosyalarının tanımlama bilgilerine erişimine izin vermemesi gerektiğini belirtir. Eklenen kötü amaçlı kodlar, 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 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 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 noneolarak 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;
    }
}