WP_NONCE_FIELD(): Защитите данные формы с помощью nonce

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *