Неверный параметр nonce в cookie что это
WordPress.org
Русский
Ошибка nonce_failure
Здравствуйте, только начинаю разбираться с wordpress, поэтому вопрос может показаться глупым. Помогите пожалуйста решить проблему. В коде темы пытаюсь изменить цвет текста(почему-то не предусмотрено в теме), но вылазит во такая ошибка «nonce_failure». Как её исправить и какая информация нужна вам для помощь? Заранее спасибо!
Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]
Вы решили отказаться от обновлений темы? Со всеми вытекающими неприятностями? Смелое решение для новичка…..
какая информация нужна вам для помощь?
как минимум заполнить поле «страница с которой нужна помощь»
Но только не страница из админки, а та, где вы пытаетесь цвет текста менять.
Во первых — не нужно «пинговать по нику». Это не приятно и осуждается правилами форума.
Во вторых — о том что речь идет о цвете текста меню и об адресе, где на него нужно посмотреть — это нужно догадаться? Извините, штатные экстрасенсы уволились пару лет назад со словами «Да у вас тут столько работы, что и тройной оклад не поможет»
Нет, не нужно искать файл, где эти стили можно исправить.
Нужно добавить свои стили в:
1. style.css дочерней темы
2. Внешний вид — настройки — дополнительный стили
3. В специальный плагин пользовательских стилей.
Спасибо большое за помощь и извините пожалуйста за ошибки, буду исправляться.
Одноразовые числа (nonce)
Во введении упоминалось, что для проверки прав есть два подхода: это «Проверка прав пользователя» и дополняющие эту проверку «Одноразовые числа».
Подробнее см. описание функции wp_create_nonce()
Пример работы Nonce
Мы не замечаем этих nonce проверок, потому что обычно все происходит быстро. Но если, например, зайти на страницу настроек в админку, подождать 24 часа и только потом попытаться сохранить данные, то внесенные изменения не сохранятся, потому что nonce проверка не будет пройдена.
Зачем нужна проверка «одноразовыми числами»?
Давайте, представим, что неавторизованный пользователь без прав, нашел уязвимое место в плагине. Например, он знает, что есть такая ссылка, нажав на которую администратор, сам не зная того, изменит какую-то настройку (опцию) на сайте, так как нужно хакеру. Например, в настройку запишется хакерский javascript (указанный в ссылке), который затем выполниться при посещении другой страницы сайта этим же администратором.
Заставить чтобы браузер администратора прошел по такой ссылке, можно разными способами.
Например, создать страницу и в ней использовать такой код:
Или например, написать письмо администратору сайта, в которое подсунуть внешне безобидную ссылку.
Авторизованный юзер (админ), кликнет по ссылке, и в результате выполниться JS код хакера, который, к примеру, вышлет данные авторизации. И вот, некогда неавторизованный хакер стал администратором вашего сайта.
Чтобы, невозможно было проделать такую хитрость, существуют «одноразовые числа» (nonce защита).
Так как nonce число устаревает, то если добавить это число в URL или в параметр формы и затем проверять его, URL или форма будут рабочими только 24 часа. А затем, запросы создаваемые URL или формой просто не будут проходить проверку. Таким образом, если хакер заставит вас кликнуть по известной ему ссылке, то ссылка скорее всего уже будет нерабочей, потому что не пройдет проверку «одноразового числа».
Nonce Функции
Для управления одноразовыми числами в WordPress есть специальные функции. Основные из них:
Пример использования Nonce защиты
Это пример из раздела проверка прав пользователя, только к нему добавляется еще и nonce проверка.
Аргумент, передаваемый функции гарантирует, что одноразовое число уникально для данного конкретного действия.
Затем, при обработке запроса, проверяем одноразовое число:
Проверка referer
Для referer проверки в WordPress есть 3 функции:
Заключение
При выполнении любой операции преобразования данных, например, сохранения настроек плагина или удаление данных плагина, всегда следует убедиться, что у пользователя есть право совершать операцию (проверка прав) и что выполняемый запрос не устарел (nonce проверка).
Использование одноразовых чисел (nonces) для защиты WordPress
Безопасность WordPress – довольно горячая тема, и, как я уже упоминал ранее в своей статье «Wordpress не идеален», все в основном сводится к проблемам с плагинами и темами, а не к дырам в самой системе WordPress.
Одноразовые числа (nonces) – один из лучших способов защитить пользователей от возможных угроз. Они используются для защиты различных пользовательских действий, связанных с плагинами, таких как отправка форм, удаление записи и т.д., что обычно затрагивает базу данных.
В этой статье я опишу проблемы, которые могут исправить одноразовые данные, а также покажу, как использовать их для того, чтобы сделать продукты более защищенными.
Почему вам могут понадобиться nonces
Допустим, вы пишете плагин, который позволяет пользователям удалять пост из фронтэнда. Если говорить кратко, механизм удаления записей – это ссылка, которая переводит вас по адресу http://mysite.com/2015/02/12/my-article/?delete=true. Другими словами, ссылка на статью с прикрепленной строкой запроса.
Код, который вы реализуете на данной странице, проверяет, является ли пользователь администратором, и если да, то запись удаляется, а пользователь перенаправляется обратно к главной странице.
Вроде бы все безопасно, верно? В конце концов, вы ведь действительно проверили, является ли пользователь администратором!
Увы, но этого недостаточно. Есть две вещи, которые вы должны проверить перед тем, как каждое действие будет выполнено: права доступа и цель.
Вы проверили, что у пользователя имеются права доступа, но вы не можете быть уверены в том, что пользователь действительно хотел удалить запись.
Справиться с этим помогают случайные числа (nonces). Nonce – это специальный код, который генерируется на момент действия. Если вы используете nonce, ссылка может иметь следующий вид: http://mysite.com/2015/02/12/my-article/?delete=true&_wpnonce=234283223. А поскольку одноразовые данные будут всегда разные, я не смогу отправить вам простую ссылку, поскольку процесс удаления не будет работать без корректных nonce.
Что же такое nonce?
Nonce – это сокращение от «number used once», используются они в криптографии для защиты данных.
В WordPress nonce реализованы несколько иначе, поскольку они не являются числами, а также не используются однократно, однако их цель и их использование во многом похоже. WordPress использует хэш, и nonces могут использоваться более одного раза, у них есть короткое время истечения.
Использование Nonces в WordPress
Процесс состоит из двух шагов: вы генерируете nonce перед выполнением действия (помещая одноразовые числа в ссылку или в виде скрытого поля формы) и проверяете его в целевом назначении. Вам понадобятся некоторые функции для этого.
Добавление nonce к формам
Чтобы добавить nonce к форме, вы должны будете включить скрытое поле с именем и значением. WordPress позволяет это сделать с помощью функции wp_nonce_field().
Вы можете использовать ее с одним параметром (в своем самом простом виде):
Функция создаст для вас два поля, одно из которых будет для nonce, а другое – для реферера, которого WordPress может тоже проверять.
Функция фактически дает вам четыре параметра, чтобы вы могли точно настроить процесс проверки. Первый параметр определяет действие, которое выполняется с nonce. Оно не выводится в поле, оно содержится в хэше. Второй параметр изменяет имя, которое по умолчанию задается как _wpnonce. Третий параметр – логическая переменная, которая проверяет, выбран или нет реферер (по умолчанию true). Наконец, четвертый параметр – это логическая переменная, которая определяет, выводится или нет поле (по умолчанию true).
Важное правило, которое надо соблюдать: имя действия должно быть максимально специфичным (первый параметр). Не надо просто называть его «delete-post», пусть оно называется «delete-post-[ post_ID ]».
На другом конце действия вы должны проверить nonce. Для этого используется параметр action формы. Чтобы проверить nonce, введите простой код:
Обратите внимание, что это будет работать только в том случае, если ваша форма использует метод post. Вы действительно всегда должны использовать post для важных данных.
Добавление Nonces к URL-адресам
Иногда вам нужно будет инициировать действие с помощью ссылки, особенно в области администратора. Поскольку ссылки по существу передаются как параметры запроса, вы можете легко прикрепить nonce к ссылкам.
Сделать это можно с помощью функции wp_nonce_url(). Вот как:
В итоге мы получим URL, который будет иметь следующий вид: http://mysite.com?p=553&_mynonce=7278c82a8f3. Как вы можете видеть, это напоминает то, что мы делали с формами; единственное отличие в том, что nonce передаются в URL как GET-параметры.
Вы можете проверить nonce тем же методом, что и раньше. В этот раз давайте добавим соответствующее имя действия с ID и используем GET-переменные:
Заключение
Это было довольно просто, не так ли? И это позволяет добавить неплохой уровень безопасности к вашему продукту.
Nonces должны использоваться всякий раз, когда вы хотите инициировать пользовательское действие, иначе ваше приложение будет уязвимо для всех типов атак.
Помните, что одноразовые числа только проверяют цель. Вам по-прежнему надо удостовериться в том, что пользователь также имеет соответствующие права доступа.
WP Magazine
Про WordPress на русском языке
Одноразовые числа nonces в WordPress и их влияние на безопасность
Внутри ядра WordPress «скрыто» множество полезных инструментов. Один из них — это токены безопасности или «nonces», которые позволяют защититься от некоторых видов неправомерного или злоумышленного использования возможностей сайта.
Их не видно в интерфейсе страниц, но они широко используются в административной части WordPress. В рамках данной статьи будут рассмотрены примеры использования, логика создания и работы с nonces, которую возможно полностью заменить своей собственной системой.
Nonce. Number Used Once
Nonce расшифровывается как «число, используемое один раз» (number used once). Эти числа или «токены» состоят из цифр и букв, являются уникальными для каждого пользователя и для каждого действия, и имеют ограниченное «время жизни», после которого становятся недействительными.
Несмотря на говорящую фразу «число, используемое один раз», в действительности это не совсем так. Nonce генерируется для конкретного пользователя и действия, поэтому будет неизменной до тех пор, пока жизненный цикл не будет закончен (примеры генерации и описание жизненного цикла будут рассмотрены ниже).
Одноразовыми же они называются, потому что предназначены для тех же целей, что и настоящие одноразовые токены. Например, nonce помогают защититься от некоторых типов атак, включая межсайтовую подделку запросов (CSRF), но не защищают от атак повторного воспроизведения (replay atack), потому что nonce не проверяются на использование лишь единожды.
В качестве примера того, как nonce используется, рассмотрим некую административную страницу, на которой отображается ссылка для удаления записи с идентификатором 123. Можно заметить, что nonce содержится в конце адреса.
Если кто-нибудь попытается изменить адрес, чтобы удалить запись с идентификатором 456, то число nonce будет недействительным и попытка удалить другую запись не увенчается успехом.
Неверное число nonce заставит WordPress выдать в ответ браузеру «403 Forbidden» с сообщением об ошибке «Вы уверены, что хотите сделать это?».
Вы уверены, что вы хотите сделать это?
” data-medium-file=”https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays-300×100.png” data-large-file=”https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays-1024×340.png” loading=”lazy” src=”https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays.png” alt=”Вы уверены, что вы хотите сделать это?” width=”766″ height=”254″ srcset=”https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays.png 1028w, https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays-300×100.png 300w, https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays-1024×340.png 1024w, https://wpmag.ru/wp-content/uploads/2015/02/wordpress-nonce-ays-768×255.png 768w” sizes=”(max-width: 1028px) 100vw, 1028px” />
Вы уверены, что вы хотите сделать это?
Создание чисел nonce
В WordPress уже заранее есть необходимый функционал для создания и добавления nonce в качестве аргумента URL или скрытого поля внутри формы. Есть несколько базовых функций и для работы в каких-то иных ситуациях.
Nonce, используемые в AJAX-запросах, обычно добавляются в скрытые поля формы, откуда к ним может получить доступ JavaScript. Стоит заметить, что nonce уникальна для текущей сессии пользователя, поэтому, если входить или выходить асинхронно, nonce на странице станут недействительными.
Генерация nonce
Иногда в качестве значений установлена строчка «впишите сюда уникальную фразу». В этом случае необходимо воспользоваться API для создания секретных ключей, заменив подобные значения по умолчанию. После этой процедуры все пароли пользователей останутся действительными, но им прийдется снова выполнить вход.
Где хранятся nonce
Система генерации чисел nonce не сохраняет их в базе данных, как может показаться на первый взгляд. В момент проверки токен генерируется заново и сравнивается с тем, который был получен.
Nonce в качестве аргумента URL
Числа nonce внутри формы
По умолчанию, функция выведет два скрытых поля. Первое содержит секретное число nonce. Внутри второго поля — текущий URL (referrer). Например:
При таком вызове в форму выведутся следующие скрытые поля:
Как и в предыдущем примере, для максимальной безопасности строчку, описывающую действие, следует задавать максимально конкретно.
Кроме этого можно задать другое имя для поля nonce, не выводить поле с referrer и указать, что результат необходимо вернуть, а не выводить. Для подробностей использования смотрите страницу описания функции wp_nonce_field() в кодексе WordPress.
Нестандартное использование nonce
Не забывайте, что и здесь для максимальной безопасности в качестве аргумента необходимо передавать строчку, как можно более точно описывающую совершаемое действие.
Проверка действительности чисел nonce
Для всех трех способов внедрения nonce, описанных в предыдущей части, есть функции, с помощью которых можно выполнить проверку действительность токена.
Проверка nonce, полученной с административной страницы
Функция проверит поля nonce и referrer и если проверка не будет успешной, то произойдет обычное действие — прекращение выполнения кода с ответом 403 и сообщением об ошибке.
Если вы использовали название поля для nonce отличное от того, что задается по умолчанию, необходимо указать его вторым аргументом:
Учтите, что данная функция работает только в рамках административной панели WordPress, и не подойдет для использования в формах, публикуемых на лицевой части сайта. Если требуется проверить действительность кодов nonce на лицевой части, используйте функцию wp_verify_nonce() (см. ниже).
Проверка nonce, полученной через AJAX-запрос
Функция проверит nonce и в случае, если проверка не будет успешной, завершит исполнение кода. Учтите, что при таком подходе поле referrer не учитывается, но данная функция убедится в том, что запрос действительно пришел по AJAX.
Если вы используете название поля для nonce, отличное от того, что задается по умолчанию ( _wpnonce или _ajax_nonce ), необходимо передать дополнительные параметры. Подробности на странице функции check_ajax_referer() в кодексе WordPress.
Проверка nonce, полученной другими способами
Изменение системы nonce в WordPress
Например, для изменения логики проверки АJAX-запросов, необходимо написать свою собственную функцию check_ajax_referrer() в плагине. Список функций и фильтров для работы с nonce можно найти в кодексе.
Изменение продолжительности жизни кодов nonce
Обратите внимание, что nonce, как говорилось выше, это не «номер, используемый единожды». Срок действия nonce не совпадает со сроком действия настоящих одноразовых токенов.
Для отсчета срока жизни nonce, WordPress использует систему с двумя «тиками» часов, где 1 тик равносилен половине продолжительности жизни. Во время второго тика nonce может быть обновлена, например, через автосохранение.
При настройках по умолчанию, где продолжительность действия nonce составляет 24 часа, это означает, что информация о времени внутри nonce, говорит сколько двенадцатичасовых периодов времени прошло с начала эпохи Unix.
Nonce, созданная в промежуток с 12:00 до 24:00 будет действительна до 12:00 следующего дня. Фактический срок службы составит значение между 12 и 24 часами. Пример выше, где срок службы устанавливался на 4 часа, означает, что nonce будет действительна от 2 до 4 часов.
Выполнение дополнительных проверок
Для выполнения дополнительных проверок в момент, когда функция check_admin_referer() установила, что nonce и referrer являются действительными, можно использовать check_admin_referer в качестве события:
Изменение внешнего вида страницы с ошибкой
Перехватив фильтр, можно указать собственную функцию, которая сможет отдавать страницу с совершенно другим внешним видом.
В заключение следует отметить, что если вы разрабатываете темы и особенно плагины для WordPress, не забывайте использовать одноразовые числа nonce во всех интерфейсах, поскольку их отсутствие может легко привести к взлому сайтов ваших пользователей.
Если у вас остались вопросы по системе токенов в WordPress, оставьте комментарий и мы обязательно вам ответим.
Часто задаваемые вопросы
Основное
Что такое AnyComment?
AnyComment — это супер быстрые комментарии с открытым исходным кодом для WordPress на базе React. Название состоит из двух слов «Any» /ˈɛni/ — любые и «Comment» [ ˈkɑːment ] комментарий. Подробнее можно почитать тут.
Как установить плагин?
У вас есть демо?
Я разработчик и хочу помочь в разработке, как это сделать?
Я хочу помочь с переводом, как это сделать?
Конечно. Плагин использует Glotpress для переводов. Вам нужно выбрать язык, который вы знаете и начать переводить.
Если вы не являетесь модератором (а обычно это так), то вам нужно создать пост на форуме переводчиков, чтобы стать модератором языка или попросить кого-то из модераторов проверить ваши переводы.
Я хочу поддержать донатом, где найти реквизиты?
Webmoney:
QIWI: +79167137760
Яндекс.Деньги: 41001780745819
Помощь
У меня отсутствует Русский перевод, что делать?
AnyComment использует WordPress полиглот для перевода на другие языки.
Поэтому, если у вас нет Русского языка, вам нужно:
Если у вас нету обновлений для переводов, то скорее всего у вас они отключены. Проверьте functions.php на наличие хуков или плагины, которые могут такое делать.
Тем самым, если появится обновление для переводов, у вас появится уведомление во вкладке «Обновления».
Ошибка “Упс, что-то пошло не так“, что делать?
Для этого была написана небольшая инструкция по отладке, которая поможет найти решение проблемы.
Не могу написать в поле ввода комментария, что делать?
Часто это связано с тем, что у вас установлен скрипт или плагин, который запрещает копировать текст на сайте. Попробуйте отключить такую функцию или удалить скрипт, чтобы проверить работу поля.
Ошибка <``code``:``rest_no_route``, при авторизации, что делать?
Это связано с настрйоками ссылок.
Теперь попробуйте снова авторизоваться.
Ошибка “Извините, но комментарии закрыты.“
В самом WordPress есть возможность закрыть комментарии. Видимо у Вас они были отключены вручную или каким-либо плагином.
Включить комментарии можно:
Если вы хотите открыть комментарии везде, тогда зайдите в раздел «Инструменты» (внутри настроек плагина) и откройте комментариев нажав подходящую кнопку на выбор.
У меня возникла проблема. Куда я могу обратиться?
Мы относимся к проблемам серьезно. Вероятнее всего вы могли найти что-то, что мы пропустили. Как правило, проблемы устраняются при следующем обновлении плагина.
Вы можете написать под любой записью в нашей группе ВК, в Telegram. Также вы можете воспользоваться форумом поддержки или GitHub тикетами, если вы нашли ошибку/баг.
У меня не отображаются комментарии в WooCommerce
Вероятнее всего у Вас отключены отзывы в настройках WooCommerce:
WooCommerce — Настройки — Товары — Основные — «Включить отзывы».
