Як користуватися WordPress Nonce
Що таке WordPress Nonce?
Як згадувалося в WordPress Codex, WordPress nonce – це "число, що використовується один раз", щоб захистити URL-адреси та форми від певних видів зловживання, зловмисного чи іншого.
Nonce – це не що інше, як маркер безпеки, який слід використовувати під час розробки, щоб уникнути атак CSRF (підробка між запитами).
Під час розробки теми або плагіна nonce слід використовувати у формі або в URL-адресі. Як розробник WordPress, використання nonce – це хороша практика.
Як використовувати Nonce у формі
Як уже згадувалося, nonce є символом для запобігання атакам CSRF. Маючи справу з формами, ми повинні додати це поняття у наші форми. Щоб додати nonce у форму, ми використовуємо приховане поле.
<input type="hidden" name="FIELD_NAME" value="<?php echo wp_create_nonce('NONCE_NAME'); ?>"
У наведеному вище коді замініть FIELD_NAME і NONCE_NAME чим завгодно.
Перевірка Чи діє Nonce?
Після того, як ви додали nonce у форму, вам потрібно перевірити, чи правильно передавати nonce після подання форми. WordPress забезпечує функцію wp_verify_nonce для перевірки достовірності nonce.
if (wp_verify_nonce( $_REQUEST['FIELD_NAME'], 'NONCE_NAME')) {
//safe to proceed
} else {
die('Security Check!');
}
Як використовувати Nonce в URL
CSRF-атаки можуть також відбуватися на веб-сайті через URL-адреси. Крім того, для делікатних сторінок nonce відіграє важливу роль. Скажімо, у нас є сторінка налаштувань на веб-сайті, яка містить деякі конфіденційні дані, які слід захистити. Ми також хочемо запобігти цьому від атак CSRF. Тому я створюю nonce URL для налаштування сторінки наступним чином.
<a href="<?php echo wp_nonce_url(get_bloginfo('url').'/settings', 'page-settings', 'setting-nonce'); ?>"></a>
Перевірка Чи діє Nonce?
Тепер нам потрібно перевірити, чи є передача nonce дійсною чи ні. Ми можемо зробити це наступним чином. Тут ми також використовуємо функцію wp_verify_nonce() для перевірки достовірності nonce. Я додаю нижче код у верхній частині сторінки налаштувань.
if (isset($_GET['setting-nonce']) && wp_verify_nonce($_GET['setting-nonce'], 'page-settings')) {
//safe tp proceed
}
Сподіваюся, ви розумієте, як користуватися WordPress Nonce. Якщо у вас є якісь запитання чи пропозиції, залиште коментар нижче.