Aynı sayfadaki birden fazla istek için aynı nonce'yi kullanabilir miyim?


13

Yoksa tam olarak anlamadığımı itiraf ettiğim nonce'nin amacını mı kırıyor? :)

Örneğin, sayfa yüklemesinde çalışan iki ajax isteğinde veya bir şey tıklandığında:

 $.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; ?>' }
 });

Yanıtlar:


4

WordPress nonce oluşturma işlevi yalnızca çağrılacak olan initkanca:

Bu işlevi çağırmak için init veya sonraki eylemlerden birini kullanın. Bir eylemin dışında çağırmak sorunlara yol açabilir. Ayrıntılar için # 14024'e bakın.

Yana initkanca "WordPress yüklenmeden sonra çalışır ancak herhangi başlıkları gönderilmeden önce", nonce'ları her tam sayfa isteği (değil ajax istek) oluşturulur. Bu nedenle, teknik olarak, aynı nonce'yi birden fazla istekte kullanabilirsiniz, ancak diğer yanıtların belirttiği gibi, bunları her istekte benzersiz yapmalısınız .


Nüfusların ne olduğu hakkında biraz daha ışık tutmak için:

Her bir Ajax isteğinde , isteğin kullanıcı tarafından tasarlandığından emin olmak için güvenlik kodları gönderilir .


Bu sonuç, ahlâkların kimlik hırsızlığını önlemenin bir yolu olduğu varsayımına dayanıyor gibi görünmektedir. Bkz. Wordpress.stackexchange.com/a/32361/205
scribu

@ scribu içgörü için teşekkürler. Cevabı düzenledim.
Naoise Golden

9

Evet, tavırlar oldukça kafa karıştırıcıdır. :)

Nonce kavramı yalnızca bir kez kullanıldığını ima etse de, WordPress nonce'yi teknik olarak birden fazla kez kullanabileceğinizi zorlamaz.

Bununla birlikte, nonce, amacı doğrulamak için kullanıldığından (olduğu gibi, gerçekten belirli bir eylemi gerçekleştirmek istediniz) - farklı eylemlerin, farklı nonce'lerin üretilmesi ve kontrol edilmesi gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.