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 после отправки формы, чтобы убедиться в их подлинности.