WordPress как на ладони
wordpress jino

wp_create_nonce() WP 2.0.4

Создает уникальный защитный ключ на короткий промежуток времени (24 часа).

Заметка: Используйте функцию во время или после события init, иначе могут возникнуть проблемы.

Про одноразовые числа читайте в отдельной статье.

Используется в: wp_nonce_url(), wp_nonce_field().
✈ 1 раз = 0.000025с = очень быстро | 50000 раз = 0.21с = очень быстро PHP 7.1.1, WP 4.7.2
Хуки из функции:
Возвращает

Строку: уникальное сочетание знаков или пусто ('').

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

wp_create_nonce( $action );
$action(строка)
Значение на основе которого будет создан уникальный ключ.
По умолчанию: -1

Примеры

#1 Получим уникальный ключ

echo wp_create_nonce();
// выведет подобный ключ: c6d25d33be

#2. Пример создания проверочного поля формы

Создадим проверочный код и добавим его в УРЛ, а затем проверим этот код:

<?php $nonce = wp_create_nonce('my-nonce'); ?>
<a href='myplugin.php?_wpnonce=<?php echo $nonce ?>&data=mydata'> ...

<?php 
// теперь, там где получаем данные проверяем
$nonce = $_REQUEST['_wpnonce'];

if( ! wp_verify_nonce( $nonce, 'my-nonce') ) 
	die('Проверка не пройдена!'); 
?>

Код wp create nonce: wp-includes/pluggable.php WP 4.8.2

<?php
function wp_create_nonce($action = -1) {
	$user = wp_get_current_user();
	$uid = (int) $user->ID;
	if ( ! $uid ) {
		/** This filter is documented in wp-includes/pluggable.php */
		$uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
	}

	$token = wp_get_session_token();
	$i = wp_nonce_tick();

	return substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 );
}

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

Из метки: nonce (защита)

Еще из раздела: Защита

Продвижение и раскрутка сайтов www.seop.ru

продвижение и раскрутка сайтов www.seop.ru

www.seop.ru

wp_create_nonce 4 комментария
  • campusboy1836 cайт: wp-plus.ru

    При использовании кеширования, как понимаю, смысла от такой проверки нет?

    Ответить2.1 года назад #
    • Kama4488

      Смысл есть, как нет - это ведь защита! Код не будет выполнен... Ну и полностью кэшировать страницы с формами - это не самая лучшая практика...

      Ответить2.1 года назад #
      • campusboy1836 cайт: wp-plus.ru

        Так я не утверждаю, а спрашиваю. Функция генерирует уникальное значение, потом оно проверяется в другом месте. Если есть кеш, то это "уникальное" значение будет постоянным на время жизни кеша, а вот на той стороне будут проверяться постоянно новые значения? И в итоге, на кешируемой странице проверка не будет проходить, правильно? И нужно ли везде использовать эту проверку? Просто я в AJAX передаю только ID поста и ответ на ребус. На том конце я фильтрую ID через (int), а передаваемый текст просто сравниваю со значением с метаполя. Это опасно? Возможно, есть другой способ? От кеширование отказаться не могу, потому что страниц будет около 10к, без кеширования не обойтись.

        Ответить2.1 года назад #
        • Kama4488

          Если страница ничего не выводит и просто возвращает данные, которые потом к тому же обрабатываются, то я думаю можно опустить эту проверку...

          Nonce защита в первую очередь нужна, чтобы нельзя было напрямую отправить запрос, чтобы убедиться что запрос пришел именно от туда откуда ожидается. Тебе на это можно забить кажется...

          Да и вообще какой смысл тратить время на взлом частного скрипта ведь так много движков, плагинов и шаблонов...

          Ответить2.1 года назад #

Здравствуйте, !

Ваш комментарий