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.
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. 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:
: _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
https://www.php.cn/link/322d830da113169fb4ca1c7543799d0
https://www.php.cn/link/dd4143061640d55fb312dd0ce8afa76e
Sekarang mari kita lihat cara melaksanakan WordPress Nonce dalam plugin.
mari kita mulakan dengan plugin asas dengan skrin tetapannya sendiri. Skrin Tetapan mempunyai medan yang boleh dikemukakan dan disimpan dalam jadual pilihan WordPress.
:
wp-content/plugins/implementing-wordpress-nonces/implementing-wordpress-nonces.php
Aktifkan plugin melalui Skrin Plugin WordPress & GT;
// ... (插件代码,与原文相同) ...
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:
masukkan URL berikut ke bar alamat penyemak imbas web anda (ganti nama domain dengan tempat anda memasang WordPress):
https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8
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.
$_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:
// ... (插件代码,与原文相同) ...
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' );
Kod ini melaksanakan operasi berikut:
Untuk memastikan nonce kami sedang dicipta dan disahkan, mari cuba lagi untuk mengakses URL langsung "jahat" kami:
https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8 . >
... (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!