Panduan untuk Nonce di WordPress
Diterbitkan: 2023-02-12Keamanan adalah topik penting bagi semua pemilik situs web. Meskipun ada banyak strategi untuk menjaga keamanan situs web Anda, penggunaan nonce di WordPress tidak boleh diabaikan. Ini adalah salah satu fitur keamanan yang paling banyak digunakan, dan mencegah berbagai potensi masalah.
Nonce adalah 'angka yang digunakan sekali', dan melindungi formulir dan URL dari individu jahat dan penyalahgunaan lainnya. Angka-angka ini berfungsi sebagai nilai identifikasi yang harus ditampilkan oleh browser pengguna, untuk mendapatkan izin untuk melakukan tindakan sensitif.
Pada artikel ini, kita akan melihat cara kerja nonce di WordPress dan cara membuatnya. Kami kemudian akan membahas cara memverifikasi nonce. Mari kita mulai!
Bagaimana Cara Kerja Nonce di WordPress?
Tujuan utama nonce adalah untuk melindungi situs web WordPress Anda dari serangan jahat, seperti Cross-Site Request Forgeries (CSRFs). Jenis serangan ini mengelabui pengguna agar mengirimkan formulir atau mengeklik tautan yang berbahaya bagi situs web Anda. Untuk melindungi situs Anda, WordPress memeriksa nilai nonce, dan hanya mengizinkan tindakan selesai jika nilai tersebut benar.
Nonce sudah menjadi bagian dari fungsionalitas WordPress dan Anda tidak perlu menambahkannya ke elemen yang dihasilkan WordPress. Ini berarti bahwa tindakan utama seperti menambah dan mengedit posting dilindungi secara otomatis.
Ketika nonce digunakan, ia memiliki umur default 24 jam. Setelah itu, nonce tidak lagi dapat digunakan untuk memverifikasi tindakan yang telah ditetapkan untuknya. Namun, umur ini dapat disesuaikan oleh administrator situs web.
Salah satu serangan CSRF paling umum yang dilindungi oleh nonces adalah penghapusan akun pengguna yang berbahaya. Setelah mengimplementasikan nonce, layar admin Anda akan menghasilkan URL untuk penghapusan akun. WordPress akan menambahkan nonce di akhir URL tersebut, yang akan terlihat seperti ini:
http://yourdomain.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315
Jika penyerang mencoba mengganti ID pengguna dengan nilai lain, seperti “pengguna=8”, nonce akan menjadi tidak valid. Penghapusan akun akan gagal, dan halaman kesalahan 403 Terlarang akan ditampilkan. Hal ini mempersulit individu jahat untuk menyerang konten situs Anda.
Mengetahui bahwa nonce dapat melindungi situs web Anda adalah penting, tetapi Anda juga perlu memahami cara menerapkannya. Meskipun sudah aktif untuk fitur WordPress default, Anda mungkin perlu mengimplementasikannya secara manual untuk tema dan plugin Anda.
Membuat Nonce
Untuk membuat nonce, Anda perlu menambahkan fungsi ke kode situs web Anda. Semua kode pembuatan nonce ditempatkan di file functions.php . Untuk membuka file ini, buka Appearance > Theme Editor di dashboard WordPress Anda. Di sebelah kanan, klik functions.php untuk membuka editor file.
Nonce diterapkan secara terpisah untuk URL, formulir, dan tindakan. Untuk membuat action nonce, tambahkan kode berikut ke file ini:

$nonce= wp_create_nonce('$action');
Bagian “$action” dari kode harus disesuaikan untuk mencerminkan tindakan yang Anda inginkan untuk diverifikasi oleh nonce. Contohnya adalah dengan menggunakan tindakan "hapus-postingan", yang mengatur nonce untuk memverifikasi pengguna yang mencoba menghapus postingan.
Untuk membuat nonce untuk URL, Anda dapat menggunakan kode berikut:
$nonce= wp_nonce_url();
Di dalam tanda kurung, Anda harus menyatakan argumen dari fungsi tersebut. Ini adalah URL kosong dan string untuk tindakan pengguna. String harus spesifik untuk satu pengguna, untuk meningkatkan keamanan nonce.
Jika Anda ingin membuat nonce untuk menghapus akun pengguna, Anda dapat menggunakan cuplikan ini:
$nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);
WordPress akan menetapkan nama nonce menjadi “_wpnonce”, tetapi Anda dapat memperbarui ini dengan menambahkan nama yang Anda pilih di akhir string di atas.
Untuk membuat nonce untuk formulir, sertakan kode ini:
$nonce= wp_nonce_field();
Di dalam tanda kurung, Anda harus menambahkan string untuk tindakan pengguna. Setelah selesai, fungsi membuat dua bidang tersembunyi dalam formulir, dengan yang pertama memegang nilai hash nonce. Bidang kedua adalah URL saat ini. Fungsi terakhir akan terlihat seperti ini:
$nonce= wp_nonce_field('remove-comment_'.$comment_id);
Fungsi nonce ini juga akan memiliki nama nonce WordPress default. Namun, ini juga sesuatu yang dapat Anda modifikasi jika Anda mau.
Memverifikasi Nonce
Setelah menambahkan nonce ke situs WordPress Anda, penting bagi Anda untuk memverifikasinya. Ini memastikan bahwa nonce berfungsi dengan benar dan menjaga keamanan situs web Anda.
Metode berbeda digunakan untuk memverifikasi nonce untuk URL dan formulir. Untuk memverifikasi nonce URL, tambahkan kode berikut ke file functions.php :
wp_verify_nonce($nonce, $action);
Dalam fungsi ini, sesuaikan “$nonce” dengan nama nonce yang ingin Anda verifikasi, seperti “delete-user”. Kemudian, ubah string “$action” ke waktu tertentu saat nonce dibuat. Saat fungsi berjalan, fungsi akan mengembalikan "false" jika nonce tidak valid.
Sebaliknya, jika nonce valid, fungsi akan mengembalikan 1 atau 2. Ini memberi tahu Anda usia nonce. Nilai sama dengan 1 berarti nonce dibuat dalam 12 jam terakhir. Nilai yang sama dengan 2 berarti nonce dibuat lebih dari 12 jam, tetapi kurang dari 24 jam yang lalu.
Jika Anda telah menambahkan nonce ke formulir, kode berikut diperlukan untuk memverifikasinya:
check_admin_referer($action, $nonce);
Jika nilai nonce valid, form akan berfungsi sebagaimana mestinya. Namun, jika nonce tidak valid, browser pengguna akan mengarahkan mereka ke halaman kesalahan 403 Terlarang.
Bangun Pengalaman Digital Aman di WP Engine
Keamanan sangat penting untuk situs web yang stabil, dan nonce menambah lapisan perlindungan ekstra. Untuk mengimplementasikannya, yang perlu Anda lakukan hanyalah menambahkan beberapa kode ke file functions.php Anda. Kode yang digunakan bervariasi tergantung pada jenis nonce yang ingin Anda buat dan tindakan yang ingin Anda lindungi.
Saat membuat dan menerapkan nonces meningkatkan keamanan situs, ada protokol keamanan lain yang perlu dipertimbangkan juga. Untungnya, platform hosting WordPress yang aman dari WP Engine menawarkan beberapa sumber daya keamanan terbaik untuk pengguna dan pengembang. Ini memberi Anda lebih banyak waktu untuk fokus menyempurnakan situs WordPress Anda!