Rumah Tutorial CMS WordTekan 关于WordPress中的Nonce详解

关于WordPress中的Nonce详解

Mar 12, 2021 am 11:40 AM
wordpress

下面由WordPress教程栏目给大家介绍关于WordPress中的Nonce,希望对需要的朋友有所帮助!

WordPress中的Nonce

Nonce是number used once的缩写,Wordpress的nonce不是数字,而一是串由数字和字符组成的Hash值,不仅只能使用一次,还同时具有生命周期(lifetime),在生命周期内,针对每个用户,同样的参数会生成同样的nonce值,直到生命周期结束。这篇文章我们就来介绍一下如何用Nonce来防止CSRF攻击。

创建一个Nonce

Nonce可以被放在Url请求中,也可以放在一个Form的Hidden元素中,然后在Ajax请求时,通过Javascript来获取他它。一个Nonce生命周期只在当前Session中,如果你退出登录后再次登录,之前的nonce也都会失效。

向URL中添加nonce

你可以通过wp_nonce_url()方法来向Url中添加一个Nonce:

wp_nonce_url( $actionurl, $action, $name );
// 例如:
$complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID );
Salin selepas log masuk

其中$bare_url(必选)为要添加nonce的url,而$action为为nonce定义的动作名字,可选,默认为-1。

默认情况下,生成的nonce在链接中的名字为_wpnonce,为了避免可能的冲突,在Wordpress3.6版本后,wp_nonce_url增加了可选的$name参数,可以让用户自己指定nonce在链接中的名字。如:

$complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID, 'my_nonce' );
Salin selepas log masuk

向Form中添加nonce

你可以能过wp_nonce_field()方法向表单中添加一个hidden元素:

PHP

wp_nonce_field( $action, $name, $referer, $echo )
//例如 :
wp_nonce_field( 'delete-comment_'.$comment_id );
wp_nonce_field( $action, $name, $referer, $echo )
//例如 :
wp_nonce_field( 'delete-comment_'.$comment_id );
Salin selepas log masuk

调用上面的方法,会生成类似下面的代码:

<input type="hidden" id="_wpnonce" name="_wpnonce" value="796c7766b1" />
<input type="hidden" name="_wp_http_referer" value="/wp-admin/edit-comments.php" />
Salin selepas log masuk

单独生成一个nonce

如果你只是想要生成一个独立的nonce,可以过wp_create_nonce()方法:

wp_create_nonce( $action );
// 例如:
$nonce = wp_create_nonce( 'my-action_'.$post->ID );
Salin selepas log masuk

同样的,$action为可选参数,默认为-1。上面的方法会返回类似“295a686963”的结果。

验证nonce有效性

验证表单中的nonce

在Admin管理界面,你可以通过check_admin_referer方法来验证Url中Nonce的有效性:

check_admin_referer( $action, $query_arg );
Salin selepas log masuk

下面是一个例子演示如何在插件中使用check_admin_referer验证nonce:

<form method="post">
   <!-- some inputs here -->
   <?php wp_nonce_field( &#39;name_of_my_action&#39;, &#39;name_of_nonce_field&#39; ); ?>
</form>
Salin selepas log masuk

验证方法:

check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' );
Salin selepas log masuk

验证Ajax中的nonce

如果要检查Ajax请求中的nonce有效性,可以使用check_ajax_referer()方法:

check_ajax_referer( $action, $query_arg, $die )
Salin selepas log masuk

$die指定如果$nonce无效,是否结束脚本执行。(默认为True)

一个简单使用check_ajax_referer的例子:

<?php
//Set Your Nonce
$ajax_nonce = wp_create_nonce( "my-special-string" );
?>
 
<script type="text/javascript">
jQuery(document).ready(function($){
    var data = {
        action: 'my_action',
        security: '<?php echo $ajax_nonce; ?>',
        my_string: 'Hello World!'
    };
    $.post(ajaxurl, data, function(response) {
        alert("Response: " + response);
    });
});
</script>
Salin selepas log masuk

在向后通过下面的代码进行验证:

add_action( 'wp_ajax_my_action', 'my_action_function' );
function my_action_function() {
    check_ajax_referer( 'my-special-string', 'security' );
    echo sanitize_text_field( $_POST['my_string'] );
    wp_die();
}
Salin selepas log masuk

验证独立生成的nonce

1
wp_verify_nonce( $nonce, $action );
Salin selepas log masuk

Atas ialah kandungan terperinci 关于WordPress中的Nonce详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Melaraskan Senarai Artikel WordPress Cara Melaraskan Senarai Artikel WordPress Apr 20, 2025 am 10:48 AM

Terdapat empat cara untuk menyesuaikan senarai artikel WordPress: Gunakan pilihan tema, gunakan plugin (seperti pesanan jenis pos, senarai pos WP, barangan boxy), gunakan kod (tambah tetapan dalam fail fungsi.php), atau ubah suai pangkalan data WordPress secara langsung.

Apakah plugin untuk wordpress menyekat ip Apakah plugin untuk wordpress menyekat ip Apr 20, 2025 am 08:27 AM

Pemilihan plugin WordPress IP menyekat adalah penting. Jenis -jenis berikut boleh dipertimbangkan: berdasarkan .htaccess: operasi yang cekap, tetapi kompleks; Operasi pangkalan data: fleksibel, tetapi kecekapan rendah; Firewall: prestasi keselamatan yang tinggi, tetapi konfigurasi kompleks; Ditulis sendiri: Kawalan tertinggi, tetapi memerlukan lebih banyak tahap teknikal.

Apa yang perlu dilakukan sekiranya terdapat ralat di WordPress Apa yang perlu dilakukan sekiranya terdapat ralat di WordPress Apr 20, 2025 am 11:57 AM

Panduan Resolusi Ralat WordPress: 500 Ralat Pelayan Dalaman: Lumpuhkan pemalam atau periksa log ralat pelayan. 404 Page Tidak Ditemui: Semak Permalink dan pastikan pautan halaman betul. Skrin Putih Kematian: Meningkatkan Had Memori PHP Server. Ralat Sambungan Pangkalan Data: Semak status pelayan pangkalan data dan konfigurasi WordPress. Petua lain: Dayakan mod debug, periksa log ralat, dan dapatkan sokongan. Mencegah kesilapan: Kemas kini dengan kerap WordPress, pasang hanya plugin yang diperlukan, sandarkan secara teratur laman web anda, dan mengoptimumkan prestasi laman web.

Log masuk akaun laman web wordpress Log masuk akaun laman web wordpress Apr 20, 2025 am 09:06 AM

Untuk log masuk ke akaun laman web WordPress: Lawati halaman log masuk: Masukkan URL laman web ditambah "/wp-login.php". Masukkan nama pengguna dan kata laluan anda. Klik "Login". Pengesahan Pengesahan Dua Langkah (Pilihan). Selepas berjaya masuk, anda akan melihat papan pemuka laman web.

Cara menukar imej kepala tema WordPress Cara menukar imej kepala tema WordPress Apr 20, 2025 am 10:00 AM

Panduan langkah demi langkah untuk menggantikan imej header WordPress: Log masuk ke papan pemuka WordPress dan menavigasi ke penampilan & gt; tema. Pilih topik yang ingin anda edit dan klik Sesuaikan. Buka panel Pilihan Tema dan cari tajuk laman web atau pilihan imej header. Klik butang Pilih Imej dan muat naik imej kepala baru. Tanaman imej dan klik simpan dan tanaman. Klik butang Simpan dan Terbitkan untuk mengemas kini perubahan.

Cara memaparkan komen WordPress Cara memaparkan komen WordPress Apr 20, 2025 pm 12:06 PM

Dayakan komen di laman web WordPress: 1. Log masuk ke panel admin, pergi ke "Tetapan" - "Perbincangan", dan periksa "Benarkan komen"; 2. Pilih lokasi untuk memaparkan komen; 3. Sesuaikan komen; 4. Menguruskan komen, meluluskan, menolak atau memadam; 5. menggunakan & lt ;? php comments_template (); ? & gt; tag untuk memaparkan komen; 6. Membolehkan komen bersarang; 7. Laraskan bentuk komen; 8. Gunakan plugin dan kod pengesahan untuk mengelakkan komen spam; 9. Menggalakkan pengguna menggunakan gravatar avatar; 10. Buat komen untuk dirujuk

Cara Menulis Tajuk WordPress Cara Menulis Tajuk WordPress Apr 20, 2025 pm 12:09 PM

Langkah -langkah untuk membuat tajuk tersuai di WordPress adalah seperti berikut: Edit fail tema "header.php". Tambahkan nama dan keterangan laman web anda. Buat menu navigasi. Tambah bar carian. Simpan perubahan dan lihat tajuk tersuai anda.

Pemalam pendaftaran produk yang disyorkan untuk WordPress yang mudah digunakan Pemalam pendaftaran produk yang disyorkan untuk WordPress yang mudah digunakan Apr 20, 2025 am 08:15 AM

Tidak ada plugin pendaftaran produk WordPress yang sempurna, pilihan harus berdasarkan keperluan sebenar dan saiz laman web. Plug-in yang disyorkan termasuk: AhliPress: Konfigurasi Konfigurasi Kompleks yang Berkuatkuas

See all articles