WP_NONCE_FIELD() │ WP 2.0.4
Функция wp_nonce_field() используется для получения или отображения скрытого поля nonce в форме.
Что такое nonce и зачем он нужен?
Nonce — это защитный элемент, который помогает убедиться, что данные формы пришли с вашего сайта, а не откуда-то еще. Хотя nonce не дает полной гарантии защиты, он помогает предотвратить большинство атак. Очень важно использовать nonce в формах.
Параметры $action и $name не обязательны, но для лучшей безопасности рекомендуется их использовать. Хотя можно использовать функцию без параметров, злоумышленники могут легко узнать, как она работает, и обойти защиту.
Имя входного поля будет соответствовать значению $name, а значение этого поля — это значение, созданное для nonce.
Использование функции
wp_nonce_field( $action, $name, $referer, $echo );
Параметры:
- $action (int/string): Имя действия, на котором будет основан токен nonce. По умолчанию:
-1. - $name (string): Значение атрибута имени тега input. По умолчанию:
'_wpnonce'. Значение этого поля можно получить из переменной$_POST[$name]. - $referer (true/false): Указывает, нужно ли добавлять скрытое поле с реферером для валидации. По умолчанию:
true. - $echo (true/false): Если
false, данные не выводятся на экран, а возвращаются в переменную для последующей обработки. По умолчанию:true.
Примеры использования
Пример 1: Проверка данных формы
Результат:
Пример 2: Улучшенная безопасность
Для повышения безопасности вы можете использовать параметры $action и $name:
После отправки данных формы нужно проверить код nonce с помощью функции wp_verify_nonce():
Пример 3: Проверка в административной панели
Если запрос ��ришел в административную панель, его можно проверить с помощью функции check_admin_referer():
function my_handler_function(){
// Проверка
// Если проверка не проходит, функция выводит сообщение об ошибке и завершает выполнение PHP.
check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' );
// Обработка данных
}
Возвращаемое значение
Функция возвращает строку с HTML-разметкой для поля nonce.
Код функции
function wp_nonce_field( $action = -1, $name = '_wpnonce', $referer = true, $display = true ) {
$name = esc_attr( $name );
$nonce_field = '';
if ( $referer ) {
$nonce_field .= wp_referer_field( false );
}
if ( $display ) {
echo $nonce_field;
}
return $nonce_field;
}
Заключение
Использование функции wp_nonce_field() в формах WordPress помогает защитить ваш сайт от различных атак и гарантирует, что данные приходят с вашего сайта. Не забывайте проверять значения nonce после отправки формы, чтобы убедиться в их подлинности.