Saya dapat melihat bahwa wp_nonce_field menghasilkan nilai di bidang tersembunyi.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Tapi wp_verify_nonce tidak menggunakan nilai itu sejauh yang saya tahu, tapi saya mungkin salah.
Sepertinya menggunakan token sesi untuk verifikasi.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Lalu apa gunanya memiliki atribut nilai di bidang tersembunyi?
nonce
verification
ed-ta
sumber
sumber
$nonce
nilai di sana - cek mengembalikan false jika$nonce
nilainya hilang.$nonce
nilai dalam perbandingan ini:hash_equals( $expected, $nonce )
Jawaban:
TL; DR
Singkatnya,
wp_verify_nonce()
gunakan nilai itu karena mengharapkan nilai itu sebagai argumen pertama.wp_verify_nonce()
argumenwp_verify_nonce()
menerima 2 argumen:$nonce
$action
Nilai dalam bidang tersembunyi (
'cabfd9e42d'
dalam contoh Anda) mewakili$nonce
.Argumen pertama adalah yang pertama, dan berasal dari permintaan
Bahkan,
wp_verify_nonce()
harus digunakan seperti ini:Jadi argumen pertama yang diteruskan
wp_verify_nonce()
adalah persis nilai yang ada di bidang tersembunyi.Argumen ke-2:
wp_create_nonce()
metodeMengenai argumen kedua, itu tergantung pada bagaimana Anda membangun nilai nonce.
Misal jika Anda melakukannya:
Maka yang perlu Anda lakukan:
Jadi, argumen kedua adalah apa yang digunakan sebagai argumen
wp_create_nonce()
.Argumen ke-2:
wp_nonce_field()
metodeJika Anda membuat nonce menggunakan
wp_nonce_field()
like:Maka Anda perlu memverifikasi nonce seperti:
Jadi, kali ini, tindakan adalah apa pun yang dilewati sebagai argumen pertama
wp_nonce_field()
.Rekap
Untuk lulus
wp_verify_nonce()
validasi, Anda harus melewati 2 argumen ke fungsi, satu adalah nilai di bidang tersembunyi nonce, yang lain adalah tindakan , dan tergantung pada bagaimana nilai nonce dibangun.sumber