Bagikan melalui


CA5368: Atur ViewStateUserKey Untuk Kelas yang Berasal dari Halaman

Properti Nilai
ID Aturan CA5368
Judul Atur ViewStateUserKey Untuk Kelas yang Berasal dari Halaman
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Properti Page.ViewStateUserKey tidak ditetapkan dalam Page.OnInit atau Page_Init metode .

Deskripsi aturan

Saat merancang Formulir Web ASP.NET, perhatikan serangan pemalsuan permintaan lintas situs (CSRF). Serangan CSRF dapat mengirim permintaan berbahaya dari pengguna yang diautentikasi ke Formulir Web ASP.NET Anda.

Salah satu cara melindungi dari serangan CSRF dalam Formulir Web ASP.NET adalah dengan mengatur halaman ViewStateUserKey ke string yang tidak dapat diprediksi dan unik untuk sesi. Untuk informasi selengkapnya, lihat Memanfaatkan Fitur Bawaan ASP.NET untuk Mematikan Serangan Web.

Cara memperbaiki pelanggaran

Atur ViewStateUserKey properti ke string yang tidak dapat diprediksi dan unik per sesi. Misalnya, jika Anda menggunakan status sesi ASP.NET, HttpSessionState.SessionID akan berfungsi.

Kapan harus menekan peringatan

Aman untuk menyembunyikan peringatan dari aturan ini jika:

  • Halaman Formulir Web ASP.NET tidak melakukan operasi sensitif.
  • Serangan pemalsuan permintaan lintas situs dimitigasi dengan cara yang tidak dideteksi oleh aturan ini. Misalnya, jika halaman mewarisi dari halaman master yang berisi pertahanan CSRF.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA5368
// The code that's violating the rule is on this line.
#pragma warning restore CA5368

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA5368.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

Pelanggaran

using System;
using System.Web.UI;

class ExampleClass : Page
{
    protected override void OnInit (EventArgs e)
    {
    }
}

Solusi

using System;
using System.Web.UI;

class ExampleClass : Page
{
    protected override void OnInit (EventArgs e)
    {
        // Assuming that your page makes use of ASP.NET session state and the SessionID is stable.
        ViewStateUserKey = Session.SessionID;
    }
}