Menggunakan Nonces untuk Meningkatkan Keselamatan dalam Aplikasi Web
Sebagai tindak balas kepada kebimbangan yang dibangkitkan oleh pengguna mengenai beberapa penyerahan permintaan HTTP yang sama untuk tujuan pemarkahan, penyelesaian bukan berasaskan telah dicadangkan. Nonces ialah nilai sekali yang boleh digunakan untuk mencegah serangan ulang tayang dan memastikan integriti data.
Untuk melaksanakan nonce sistem:
Sebelah pelayan
-
getNonce():
- Mengenal pasti pelanggan meminta nonce.
- Menghasilkan nonce rawak menggunakan fungsi cincang selamat (cth., SHA-512).
- Menyimpan nonce yang dikaitkan dengan permintaan pelanggan.
- Mengembalikan nonce kepada pelanggan.
-
verifyNonce():
- Mengenal pasti pelanggan meminta pengesahan.
- Mengambil semula nonce yang disimpan sebelum ini untuk pelanggan tersebut.
- Mengira cincangan nonce, counter-nonce yang dijana pelanggan (cnonce) dan data yang akan disahkan .
- Membandingkan cincang yang dikira dengan cincang yang disediakan oleh pelanggan.
- Mengembalikan benar jika cincang sepadan, menunjukkan sah permintaan.
Pihak pelanggan
-
sendData():
- Mendapatkan nonce daripada pelayan menggunakan getNonce() kaedah.
- Menghasilkan cnonce menggunakan fungsi cincang selamat.
- Mengira cincangan nonce, cnonce dan data yang akan dihantar.
- Menghantar data, cnonce, dan cincang ke pelayan.
-
makeRandomString():
- Mengembalikan rentetan atau nombor rawak.
- A pelaksanaan selamat akan menggunakan rawak berkualiti tinggi, seperti yang disediakan oleh fungsi mt_rand() dalam PHP.
- Fungsi cincang yang digunakan dalam pengiraan hendaklah sama pada kedua-dua bahagian pelayan dan klien.
Dengan menggunakan nonces, anda boleh menghalang main semula serangan dengan memastikan setiap permintaan adalah unik dan belum diserahkan sebelum ini. Ini melindungi integriti sistem pemarkahan anda dan melindungi daripada percubaan berniat jahat untuk mendapatkan kelebihan yang tidak adil.
Atas ialah kandungan terperinci Bagaimanakah Nonces Boleh Digunakan untuk Mencegah Serangan Main Semula dan Meningkatkan Keselamatan Aplikasi Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!