Bisakah saya menggunakan nomor yang sama untuk beberapa permintaan di halaman yang sama?


13

Ataukah ini mematahkan tujuan dari elemen tersebut, yang saya akui tidak cukup memahaminya? :)

Misalnya pada dua permintaan ajax yang berjalan pada pemuatan halaman, atau ketika sesuatu diklik:

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo2',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

Jawaban:


4

The Fungsi WordPress Nonce penciptaan adalah untuk dipanggil hanya pada initkait:

Gunakan init atau tindakan selanjutnya untuk memanggil fungsi ini. Menyebutnya di luar suatu tindakan dapat menyebabkan masalah. Lihat # 14024 untuk detailnya.

Karena inithook "berjalan setelah WordPress selesai memuat tetapi sebelum header dikirim", nonces dibuat pada setiap permintaan satu halaman penuh (bukan permintaan ajax). Jadi, secara teknis, Anda dapat menggunakan angka yang sama pada beberapa permintaan, tetapi Anda harus membuatnya unik pada setiap permintaan , seperti yang ditunjukkan oleh jawaban lain.


Untuk menjelaskan lebih lanjut tentang apa itu nonces:

Nonces dikirim pada setiap permintaan Ajax sebagai token keamanan, untuk memastikan permintaan itu dimaksudkan oleh pengguna.


Kesimpulan itu tampaknya didasarkan pada asumsi yang salah bahwa nonces adalah cara untuk mencegah pencurian identitas. Lihat wordpress.stackexchange.com/a/32361/205
scribu

@scribu terima kasih atas wawasannya. Saya mengedit jawabannya.
Naoise Golden

9

Ya, nonces sangat membingungkan. :)

Sementara konsep nonce menyiratkan bahwa itu hanya digunakan sekali, WordPress tidak menegakkan itu dan secara teknis Anda dapat menggunakan nonce beberapa kali.

Namun karena nonce digunakan untuk memverifikasi maksud (seperti dalam apakah Anda benar-benar bermaksud melakukan tindakan tertentu) - tindakan yang berbeda harus menghasilkan dan memeriksa perbedaan nonces.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.