Я пытался выяснить, где WordPress хранит все nonces. Но не смог найти подсказки. Сначала я проверил базу данных, но не смог найти таблицу с именем wp_nonces.
Я разместил этот вопрос 11 месяцев назад.
Все ответы, которые я получил, были великими и очень помогли мне.
Но ни один из них не адресовал место хранения WordPress nonces. Это был мой реальный вопрос.
Итак, я выкопал исходный код WordPress и смог найти правильное место хранения WordPress nonces.
Они хранятся в пользовательских сеансах.
Это уникальные маркеры, хранящиеся в сеансе пользователя. Nonces имеют определенный срок службы.
Если пользователь выходит из WordPress, нонцы больше не будут действительны.
PS: Я задал этот вопрос, и теперь я отправляю этот ответ, чтобы помочь другим 🙂
Nonces не хранятся непосредственно в любом месте, они создаются с помощью функции wp_create_nonce
и проверяются с помощью wp_verify_nonce
.
Эти функции, в свою очередь, используют wp_hash
для хэша вместе с продолжительностью жизни, пользовательской строкой, user_id и токеном сеанса, хранящимся в wp_usermeta, с ключом session_tokens
.
Nonces – это одноразовые токены, созданные WordPress для проверки различных запросов, таких как добавление комментария, удаление сообщения, удаление пользователя и т. Д.
Они не хранятся нигде, и они не должны быть.
Возьмем следующий пример; при управлении контентом в WordPress ссылка Bin может выглядеть примерно так:
http://www.example.com/wp-admin/post.php?post=1337&action=trash&_wpnonce=369f188682
Однако, если вы попытались изменить идентификатор страницы / сообщения в URL-адресе на что-то еще ( см. Ниже ), то nonce больше не будет действительным, вернет ошибку 403 и отобразит: «Вы уверены, что хотите сделай это?"
http://www.example.com/wp-admin/post.php?post=9100&action=trash&_wpnonce=369f188682
Добавление скрытого поля _nonce
(возьмите Contact Form 7 в качестве основного примера), как правило, является хорошей практикой при внедрении форм в WordPress, поскольку это предотвращает подделку запросов на межсайтовый запрос (CSRF) и т. Д.
Ресурсы: