Bagaimanakah Nonces Boleh Melindungi Permintaan Web Terhadap Serangan Ulangan?

Susan Sarandon
Lepaskan: 2024-11-16 02:53:02
asal
305 orang telah melayarinya

How Can Nonces Secure Web Requests Against Replay Attacks?

Cara Melindungi Permintaan Web dengan Nonces

Isu

Seorang pengguna telah menemui cara untuk mengeksploitasi sistem pengesahan permintaan sistem pemarkahan tapak web dengan menduplikasi permintaan HTTP bernilai tinggi. Ini menjejaskan integriti dan kebolehpercayaan sistem.

Penyelesaian: Melaksanakan Sistem Nonce

Nonces (nombor digunakan sekali) ialah nilai yang menghalang serangan ulang tayang permintaan dengan memastikan permintaan tertentu tidak dilakukan dibuat sebelum ini. Berikut ialah cara biasa dan selamat untuk melaksanakan sistem nonce:

Penjanaan dan Pengesahan Nonce Sebelah Pelayan

Fungsi getNonce()

  • Mengenal pasti pelanggan yang membuat permintaan (cth., dengan nama pengguna, session).
  • Menghasilkan nonce rawak menggunakan fungsi cincang selamat (cth., SHA512).
  • Menyimpan nonce dalam pangkalan data yang dikaitkan dengan ID pelanggan.
  • Mengembalikan nonce kepada pelanggan.

verifyNonce() Fungsi

  • Mengambil nonce yang disimpan sebelum ini untuk ID klien.
  • Mengalih keluar nonce daripada pangkalan data (untuk mengelakkan ia daripada digunakan semula).
  • Menghasilkan cincang dengan nonce yang disediakan oleh pelanggan (cnonce), data permintaan dan rahsia garam.
  • Membandingkan cincang yang dijana dengan cincang yang disediakan oleh pelanggan.
  • Mengembalikan benar jika cincangan sepadan, menunjukkan nonce yang sah.

Pihak Pelanggan Penggunaan Nonce

sendData() Fungsi

  • Mengambil nonce daripada pelayan menggunakan fungsi getNonce().
  • Menghasilkan nonce khusus pelanggan (cnonce) menggunakan fungsi cincang selamat.
  • Menggabungkan pelayan bukan sekali, klien bukan sekali dan permintaan data.
  • Menghasilkan cincang daripada nilai yang digabungkan.
  • Menghantar permintaan kepada pelayan, termasuk data, cnonce dan cincang.

Pertimbangan Keselamatan

  • Generasi Tanpa Rawak: Fungsi makeRandomString() harus menjana nombor rawak yang sangat tidak dapat diramalkan untuk meningkatkan keselamatan.
  • Fungsi Hash Selamat: Gunakan fungsi cincang yang kuat seperti SHA512 atau bcrypt untuk pengiraan cincang yang tidak berkaitan.
  • Penggunaan Sekali Permintaan: Nonces hanya boleh digunakan sekali dan dialih keluar daripada storan untuk mengelakkan serangan main semula.

Atas ialah kandungan terperinci Bagaimanakah Nonces Boleh Melindungi Permintaan Web Terhadap Serangan Ulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan