WP_NONCE_URL() — Добавление безопасности к URL-адресу

WP_NONCE_URL() │ WP 2.0.4

Функция WP_NONCE_URL() добавляет специальный токен — nonce — к URL-адресу. Например, она может превратить URL http://example.com/url в http://example.com/url?_wpnonce=9d6bd884a1.

Эта функция предназначена только для отображения на экране, а не для использования в других PHP-функциях (например, при редиректе с помощью wp_redirect()). Это связано с тем, что функция экранирует значение с помощью esc_html(), чтобы избежать потенциальных проблем с безопасностью.

Производительность

  • Использование функции один раз: ~0.000102 секунды (быстро)
  • Использование функции 50000 раз: ~2.28 секунды (также быстро)

Возвращаемое значение

Функция возвращает строку — экранированный URL с добавленным действием nonce.

Синтаксис использования

wp_nonce_url( $actionurl, $action, $name );
  • $actionurl (строка) (обязательный) — URL, к которому нужно добавить nonce.
  • $action (число или строка) — Имя действия nonce. По умолчанию: -1
  • $name (строка) — Имя nonce. По умолчанию: '_wpnonce'

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

Пример 1: Базовый пример

echo wp_nonce_url( 'http://example.com/url' );
// вывод: http://example.com/url?_wpnonce=1ef8422137
echo wp_nonce_url( 'http://example.com/url?arg=data' );
// вывод: http://example.com/url?arg=data&_wpnonce=9d6bd884a1

Пример 2: Использование с уникальным именем nonce

echo wp_nonce_url( 'http://example.com/url', 'my_nonce' );
// вывод: http://example.com/url?_wpnonce=4a875e9c59

// затем проверьте URL
if( wp_verify_nonce( $_GET['_wpnonce'], 'my_nonce' ) ) {
    echo "Проверка пройдена";
} else {
    echo "Проверка не пройдена";
}

Пример 3: Добавление nonce к URL для использования в wp_redirect()

Результат работы функции wp_nonce_url() предназначен только для вывода на экран, а не для использования внутри PHP. Если вы хотите добавить nonce к URL и использовать его в какой-либо функции (например, wp_redirect()), вы можете сделать так:

$url = '/wp-admin/admin.php?page=foo';
$nonce = wp_create_nonce( 'my_nonce_key' ); // создаем nonce

$nonce_url = add_query_arg( [ '_wpnonce'=>$nonce ], $url );

echo $nonce_url; //> /wp-admin/admin.php?page=foo&_wpnonce=74c42a878c

Изменения

  • С версии 2.0.4 — добавлено в WordPress.

Код функции

Вот как выглядит код функции wp_nonce_url в файле wp-includes/functions.php:


function wp_nonce_url( $actionurl, $action = -1, $name = '_wpnonce' ) {
$actionurl = str_replace( '&', '&', $actionurl );
return esc_html( add_query_arg( $name, wp_create_nonce( $action ), $actionurl ) );
}

Связанные функции

  • nonce (защита безопасности)

    • check_admin_referer()
    • check_ajax_referer()
    • wp_create_nonce()
    • wp_nonce_ays()
    • wp_nonce_field()
    • wp_referer_field()
    • wp_verify_nonce()
  • Безопасность сайта

    • balanceTags()
    • current_user_can()
    • force_balance_tags()
    • is_ssl()
    • wp_check_password()
    • wp_generate_password()
    • wp_hash_password()
    • wp_set_password()

Leave a Reply

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