Menggunakan Nonces untuk Mencegah Permintaan Serangan Duplikasi
Untuk memerangi serangan pendua permintaan, nonces (nombor digunakan sekali) boleh dilaksanakan dalam sistem pemarkahan anda . Nonce ialah nilai rawak unik yang digunakan sebagai cabaran untuk permintaan tertentu. Dengan memasukkan nonce ke dalam proses pengesahan permintaan, anda boleh memastikan bahawa setiap permintaan dikendalikan sekali sahaja.
Pelaksanaan Sistem Nonce
Untuk menyediakan sistem nonce, anda boleh mengikuti langkah berikut:
Fungsi Bahagian Pelayan: getNonce()
- Kenal pasti permintaan menggunakan nama pengguna, sesi atau pengecam unik lain.
- Jana nonce rawak menggunakan fungsi pencincangan selamat (cth., SHA512) dan simpan ia dikaitkan dengan pengecam permintaan.
- Kembalikan nonce kepada pelanggan.
Fungsi sisi pelayan: verifyNonce(data, cnonce, hash)
- Kenal pasti permintaan.
- Dapatkan nonce yang disimpan dikaitkan dengan pengecam permintaan.
- Sahkan nonce dengan membandingkan cincangan nonce asal, nonce pelanggan (cnonce) dan minta data kepada cincang yang disediakan.
Fungsi sisi klien: sendData(data)
- Dapatkan nonce daripada pelayan.
- Jana pelanggan nonce (cnonce).
- Kira cincang menggunakan nonce asal, nonce klien dan data permintaan.
- Hantar data permintaan bersama-sama dengan cnonce dan cincang ke pelayan.
Tambahan Pertimbangan
-
Rawak Nonces: Keselamatan sistem anda bergantung pada rawak nonces. Gunakan penjana nombor rawak selamat (cth., mt_rand()).
-
Penyimpanan Nonces: Simpan nonces menggunakan kaedah selamat untuk mengelakkan serangan main semula.
-
Tamat Tempoh Nonces: Pertimbangkan untuk menetapkan tempoh tamat nonces untuk mengelakkannya daripada digunakan selama-lamanya.
-
Butiran Pelaksanaan: Pelaksanaan klien dan pelayan sistem nonce tidak perlu sepadan, selagi fungsi cincang yang digunakan dalam perbandingan adalah konsisten.
Atas ialah kandungan terperinci Bagaimanakah Nonces Boleh Menghalang Permintaan Serangan Duplikasi dalam Sistem Pemarkahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn