wp_create_nonce()

Создает криптографический токен, привязанный к конкретному действию, пользователю, сеансу пользователя и временному интервалу
Функция WordPress
INT 2.0.3
WordPress Icon

Описание функции

Функция wp_create_nonce() создает криптографический токен, связанный с определенным действием, пользователем, пользовательской сессией и временным окном.

Токен nonce (number used once) используется для защиты от CSRF-атак (межсайтовая подделка запроса). Он генерируется на сервере и передается клиенту, который должен отправить его обратно на сервер при выполнении определенного действия. Таким образом, функция wp_create_nonce() гарантирует, что запросы, поступающие на сервер, являются действительными и не подделанными.

Использование

wp_create_nonce( string|int $action = -1 ): string

Функция wp_create_nonce() принимает один параметр $action, который является строкой или целым числом и представляет собой контекст для токена nonce. По умолчанию значение параметра равно -1.

Функция возвращает строку — сгенерированный токен nonce.


/**
 * Пример использования функции wp_create_nonce()
 */
$action = 'my_action'; // Контекст для токена nonce
$nonce = wp_create_nonce( $action ); // Генерация токена nonce
// Использование токена nonce в форме или запросе
echo '<form action="example.php" method="post">';
echo '<input type="hidden" name="action" value="' . esc_attr( $action ) . '">';
echo '<input type="hidden" name="nonce" value="' . esc_attr( $nonce ) . '">';
echo '<input type="submit" value="Submit">';
echo '</form>';

В данном примере мы создаем токен nonce с контекстом «my_action» и используем его в HTML-форме. При отправке формы на сервер, токен nonce будет передан вместе с другими данными. На сервере можно проверить валидность токена nonce с помощью функции wp_verify_nonce().

  • $action (string|int) — Скалярное значение, добавляющее контекст к токену nonce. По умолчанию: -1.

Функция возвращает строку — сгенерированный токен nonce.

Примеры использования

Создание токена безопасности


/**
 * Создание токена безопасности.
 *
 * @param string|int $action Optional. Скалярное значение для добавления контекста к токену. По умолчанию: -1.
 * @return string Токен.
 */
function create_security_token($action = -1) {
    $token = wp_create_nonce($action);
    return $token;
}
// Пример использования
$security_token = create_security_token();

Функция wp_create_nonce() используется для создания криптографического токена, связанного с определенным действием, пользователем, пользовательской сессией и временным окном.

В данном примере кода функция create_security_token() принимает опциональный параметр $action, который добавляет контекст к токену. По умолчанию, если параметр не указан, используется значение -1.

Результатом выполнения функции является строковое значение токена безопасности, которое может быть использовано в дальнейшем.

Проверка токена на подлинность


/**
 * Проверка токена на подлинность.
 *
 * @param string $token Токен для проверки.
 * @param string|int $action Optional. Скалярное значение, связанное с токеном. По умолчанию: -1.
 * @return bool True, если токен подлинный. False, если токен недействительный.
 */
function verify_security_token($token, $action = -1) {
    $result = wp_verify_nonce($token, $action);
    return $result;
}
// Пример использования
$is_valid = verify_security_token($security_token);

Функция wp_verify_nonce() используется для проверки подлинности токена безопасности.

В данном примере кода функция verify_security_token() принимает два параметра: $token — токен, который требуется проверить, и $action — опциональный параметр, связанный с токеном. По умолчанию, если параметр не указан, используется значение -1.

Результатом выполнения функции является логическое значение: true, если токен подлинный, и false, если токен недействительный.

Передача токена в URL-адресе


/**
 * Передача токена в URL-адресе.
 *
 * @param string $url URL-адрес, к которому добавляется токен.
 * @param string|int $action Optional. Скалярное значение, связанное с токеном. По умолчанию: -1.
 * @return string URL-адрес с добавленным токеном.
 */
function add_security_token_to_url($url, $action = -1) {
    $url_with_token = wp_nonce_url($url, $action);
    return $url_with_token;
}
// Пример использования
$secure_url = add_security_token_to_url('https://example.com/my-page');

Функция wp_nonce_url() используется для добавления токена безопасности к URL-адресу.

В данном примере кода функция add_security_token_to_url() принимает два параметра: $url — URL-адрес, к которому требуется добавить токен, и $action — опциональный параметр, связанный с токеном. По умолчанию, если параметр не указан, используется значение -1.

Результатом выполнения функции является URL-адрес с добавленным токеном безопасности.

Использование токена в AJAX-запросе


// JavaScript
var securityToken = '<?php echo wp_create_nonce('my_ajax_action'); ?>';
$.ajax({
    url: ajaxurl,
    type: 'POST',
    data: {
        action: 'my_ajax_action',
        security: securityToken,
        // Дополнительные данные для запроса
    },
    success: function(response) {
        // Обработка успешного ответа
    },
    error: function(xhr, status, error) {
        // Обработка ошибки
    }
});

В данном примере кода токен безопасности создается с помощью функции wp_create_nonce() и передается в AJAX-запросе в качестве значения параметра security.

На сервере WordPress можно проверить подлинность токена с помощью функции wp_verify_nonce() и выполнить необходимые действия в зависимости от результата проверки.

Генерация токена для определенного действия


/**
 * Генерация токена для определенного действия.
 *
 * @param string $action Действие, для которого генерируется токен.
 * @return string Токен.
 */
function generate_token_for_action($action) {
    $token = wp_create_nonce($action);
    return $token;
}
// Пример использования
$action_token = generate_token_for_action('my_custom_action');

Функция generate_token_for_action() используется для генерации токена безопасности для определенного действия.

В данном примере кода функция принимает параметр $action, который указывает на конкретное действие, для которого требуется сгенерировать токен.

Результатом выполнения функции является строковое значение токена безопасности, связанное с указанным действием.

Вопросы и ответы

Как создать и использовать nonce в WordPress?

Функция wp_create_nonce() используется для создания криптографического токена, связанного с определенным действием, пользователем, сеансом пользователя и временным окном.

Пример использования функции:


$nonce = wp_create_nonce( 'my_action' );

Как проверить валидность nonce в WordPress?

Для проверки валидности nonce в WordPress используется функция wp_verify_nonce(). Она принимает два параметра: сам nonce и действие, с которым он связан.

Пример использования функции:


if ( wp_verify_nonce( $nonce, 'my_action' ) ) {
    // Нонс валиден, выполняем действие
} else {
    // Нонс недействителен, обрабатываем ошибку
}

Какой формат имеет nonce в WordPress?

Nonce в WordPress представляет собой строку из 10 символов, содержащую буквы верхнего и нижнего регистра, а также цифры.

Пример nonce: 2f8ab3c4d7

Можно ли использовать один и тот же nonce для разных действий?

Нет, каждое действие в WordPress должно иметь свой уникальный nonce. Использование одного и того же nonce для разных действий может привести к уязвимостям в безопасности.

Какой срок действия имеет nonce в WordPress?

Nonce в WordPress имеет ограниченный срок действия, который составляет 24 часа. По истечении этого времени nonce становится недействительным и должен быть обновлен.

Можно ли использовать nonce без указания действия?

Нет, использование nonce без указания действия не рекомендуется. Действие добавляет контекст к nonce и помогает предотвратить подделку запросов. Если не указать действие, nonce может быть использован в любом контексте, что увеличивает риск безопасности.

Как генерируется nonce в WordPress?

Nonce в WordPress генерируется с использованием функции wp_create_nonce(). Она создает криптографический токен, связанный с определенным действием, пользователем, сеансом пользователя и временным окном. Для генерации nonce необходимо передать действие в качестве параметра функции.


$action = 'my_action';
$nonce = wp_create_nonce( $action );

Какой тип данных возвращает функция wp_create_nonce()?

Функция wp_create_nonce() возвращает строку — токен nonce. Этот токен может быть использован для проверки подлинности запроса и предотвращения подделки.


$action = 'my_action';
$nonce = wp_create_nonce( $action );
echo 'Nonce: ' . $nonce;

Функция wp_create_nonce() в WordPress позволяет создавать криптографические токены, связанные с определенными действиями, пользователем, сеансом пользователя и временным окном. Эти токены используются для проверки подлинности запросов и предотвращения подделки. Необходимо указывать действие при генерации nonce и обновлять его по истечении срока действия.

Связанные элементы

  • Функция wp_verify_nonce(): Проверяет, является ли переданный токен действительным для указанного действия.
  • Функция wp_nonce_url(): Добавляет токен nonce к URL-адресу.
  • Функция wp_nonce_ays(): Отображает страницу подтверждения, если токен nonce недействителен.
  • Хук check_admin_referer: Вызывается при проверке действительности токена nonce в административной части сайта.
  • Хук nonce_life: Позволяет изменить время жизни токена nonce.
  • Хук nonce_user_logged_out: Вызывается при выходе пользователя из системы для удаления токенов nonce, связанных с этим пользователем.
  • Класс WP_Site_Health: Использует токены nonce для проверки безопасности сайта.
Обсуждение