Rumah > Tutorial CMS > WordTekan > Apa itu WordPress Nonces?

Apa itu WordPress Nonces?

Jennifer Aniston
Lepaskan: 2025-02-16 12:58:09
asal
641 orang telah melayarinya

WordPress Security: Gunakan nonce untuk melindungi tema dan kod plugin

Melindungi keselamatan tema WordPress atau kod plug-in adalah penting dan dapat menghalang serangan dari pengguna yang berniat jahat. Kami telah meliputi sebelum membersihkan, melarikan diri, dan mengesahkan data bentuk di WordPress, dan bagaimana menggunakan pengimbas VIP untuk meningkatkan kualiti tema WordPress. Hari ini, kami akan meneroka bagaimana Nonce (satu kali digital) dapat membantu menjaga tema WordPress dan plugin selamat.

mata utama

  • WordPress Nonce, atau "Nombor Penggunaan Satu Masa", adalah token keselamatan yang unik yang digunakan untuk meningkatkan keselamatan laman web WordPress dengan mengesahkan permintaan pengguna dan mencegah percubaan berniat jahat. Mereka amat berguna dalam mencegah serangan pemalsuan permintaan lintas tapak (CSRF).
  • Nonce berfungsi dengan menjana token unik untuk setiap sesi pengguna, penyerahan bentuk, atau permintaan Ajax. Token ini kemudiannya disahkan apabila memproses permintaan, dan jika ia tidak sepadan, permintaan itu ditolak. Ini menjadikan sukar bagi penyerang untuk meramalkan atau menyalahgunakan token.
  • Membuat Nonce dalam WordPress dicapai dengan menggunakan fungsi WordPress wp_create_nonce(), yang menerima parameter rentetan tunggal yang mewakili operasi untuk dilindungi. Pengesahan Nonce dilakukan menggunakan fungsi wp_verify_nonce(), yang menerima dua parameter: nonce untuk disahkan dan operasi yang berkaitan.
  • Nonce boleh digunakan untuk permintaan Ajax di WordPress, menambah lapisan tambahan keselamatan untuk mencegah serangan CSRF. Nonce juga khusus pengguna, menyediakan lapisan keselamatan tambahan dengan memastikan bahawa nonce yang dibuat untuk satu pengguna tidak sah untuk yang lain.

Apa itu WordPress Nonce?

wordpress nonce ditakrifkan sebagai:

... "nombor penggunaan satu kali" untuk membantu melindungi URL dan bentuk dari jenis penyalahgunaan tertentu (berniat jahat atau sebaliknya). https://www.php.cn/link/c5af1dfde1040402285102771ad64b3dac

Semasa di WordPress, Nonce bukan nombor teknikal (ia adalah hash huruf dan nombor), ia membantu menghalang pengguna yang berniat jahat daripada menjalankan tindakan.

karya WordPress Nonce dibahagikan kepada dua bahagian:

  • Buat nonce (nilai hash), serahkannya melalui borang atau tindakan, dan
  • Sahkan nonce, kemudian terima data borang atau jalankan tindakan.
Contohnya, apabila anda memadamkan siaran di skrin admin WordPress, anda akan melihat bahawa URL mengandungi parameter

: _wpnonce

https://www.php.cn/link/18175d262a01ebf04bc03e38e48e3ffc

Rutin untuk memadam siaran akan memeriksa sama ada Post 542 mempunyai nilai nonce

sebelum memadamkan siaran. Jika Nonce tidak wujud atau tidak sepadan dengan nilai yang diharapkan, jawatan itu tidak akan dipadamkan. a03ac85772

Ini menghalang pengguna berniat jahat daripada berpotensi memadam sejumlah besar jawatan. Sebagai contoh, perkara berikut tidak akan berfungsi kerana Nonce milik Post ID 542:

https://www.php.cn/link/322d830da113169fb4ca1c7543799d0 https://www.php.cn/link/dd4143061640d55fb312dd0ce8afa76e https://www.php.cn/link/9e0f9113b444003201076a9fade1b72d8

Sekarang mari kita lihat cara melaksanakan WordPress Nonce dalam plugin. What Are WordPress Nonces?

Sediakan plugin WordPress kami

mari kita mulakan dengan plugin asas dengan skrin tetapannya sendiri. Skrin Tetapan mempunyai medan yang boleh dikemukakan dan disimpan dalam jadual pilihan WordPress.

masukkan kod berikut ke dalam fail baru dalam

:

wp-content/plugins/implementing-wordpress-nonces/implementing-wordpress-nonces.php Aktifkan plugin melalui Skrin Plugin WordPress & GT;

// ... (插件代码,与原文相同) ...
Salin selepas log masuk
Salin selepas log masuk

Klik item ini dan anda akan dibawa ke skrin Tetapan, dengan hanya satu bidang:

Masukkan sebarang nilai, klik "Simpan", jika semuanya berfungsi, anda akan melihat maklumat pengesahan dan nilai yang anda masukkan: What Are WordPress Nonces?

Menunjukkan kelemahan keselamatan

What Are WordPress Nonces? masukkan URL berikut ke bar alamat penyemak imbas web anda (ganti nama domain dengan tempat anda memasang WordPress):

https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8

What Are WordPress Nonces?

Perhatian Apa yang berlaku? Nilai hanya disimpan sebagai ABC, hanya mengakses URL dan log masuk ke WordPress:

sementara kita boleh menggunakan

dalam kod kami dan bukannya (kami menggunakan untuk menunjukkan isu keselamatan dengan lebih mudah), ini tidak membantu - pengguna berniat masih boleh menggunakan diri mereka sendiri atau mendorong anda untuk mengklik Pautan membolehkan anda menghantar permintaan pos ke skrin ini, menghasilkan perubahan nilai pilihan.

Ini dipanggil pemalsuan permintaan lintas tapak (atau CSRF). Laman web yang berniat jahat, e -mel, aplikasi, dan lain -lain akan menyebabkan pelayar web pengguna melakukan operasi yang tidak perlu.

Kami sekarang akan membuat dan mengesahkan WordPress Nonce untuk mengelakkan serangan ini menjadi mungkin. What Are WordPress Nonces?

Lindungi pemalam kami dengan nonce

$_POST Seperti yang disebutkan sebelumnya, proses ini dibahagikan kepada dua langkah: pertama, kita perlu membuat nonce yang akan dikemukakan dengan borang kami. Kedua, kita perlu mengesahkan nonce ketika mengemukakan borang. $_REQUEST

Untuk membuat medan nonce dalam bentuk kami, kami boleh menggunakan wp_nonce_field():

Dapatkan atau tunjukkan medan bentuk tersembunyi yang tidak tersembunyi ... digunakan untuk mengesahkan bahawa kandungan permintaan borang datang dari tapak semasa, bukan di tempat lain ...

tambahkan kod berikut di atas butang input kami:

// ... (插件代码,与原文相同) ...
Salin selepas log masuk
Salin selepas log masuk

wp_nonce_field Terima empat parameter-dua yang pertama adalah yang paling penting:

  • $action: Ini menentukan operasi khusus yang kita jalankan dan harus unik. Adalah lebih baik untuk menggunakan nama plugin sebagai awalan untuk operasi, kerana mungkin terdapat beberapa operasi yang dijalankan. Dalam kes ini, kami menjimatkan sesuatu, jadi kami menggunakan implementing_wordpress_nonces_save
  • $name: Ini menentukan nama medan tersembunyi yang dicipta oleh fungsi ini. Seperti yang disebutkan di atas, kami telah menggunakan nama plugin sebagai awalannya, jadi kami menamakannya implementing_wordpress_nonces_nonce

Jika kita memuatkan semula skrin tetapan, tukar nilai kami dan klik simpan, anda akan melihat bahawa nilai itu masih akan berubah. Sekarang kita perlu melaksanakan pemeriksaan medan nonce yang dikemukakan, menggunakan wp_verify_nonce( $name, $action ):

Sahkan bahawa nonce adalah betul dan tidak tamat tempoh berbanding dengan operasi yang ditentukan. Fungsi ini digunakan untuk mengesahkan nonce yang dihantar dalam permintaan semasa, biasanya diakses melalui pemboleh ubah php $_REQUEST.

Gantikan bahagian "Simpan Tetapan" dari admin_screen() fungsi plugin kami dengan kod berikut:

wp_nonce_field( 'implementing_wordpress_nonces_save', 'implementing_wordpress_nonces_nonce' );
Salin selepas log masuk

Kod ini melaksanakan operasi berikut:

  • Pertama, ia memeriksa jika kita telah mengemukakan sesuatu.
  • maka ia memeriksa jika bidang nonce kami wujud dan, jika ya, cuba sahkan nilai nonce berdasarkan tindakan yang kami harapkan.
  • Jika cek berlalu, kemas kini pilihan.
  • Jika cek gagal, kami akan membuang ralat 403 dengan mesej "tidak sah yang ditentukan".

Untuk memastikan nonce kami sedang dicipta dan disahkan, mari cuba lagi untuk mengakses URL langsung "jahat" kami:

https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8 . >

Jika nonce kami dilaksanakan dan sedang disahkan, anda akan melihat pemberitahuan "spesifikasi nonce tidak sah":

What Are WordPress Nonces? ... (selebihnya adalah sama dengan teks asal, tetapi bahasa dan ekspresi diselaraskan secara terperinci untuk memastikan niat asal tidak berubah) ....

Atas ialah kandungan terperinci Apa itu WordPress Nonces?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan