Разное

Wp create nonce: wp_create_nonce() | Function | WordPress Developer Resources

15.05.2023

Использование одноразовых номеров для повышения безопасности WordPress

Безопасность WordPress — это горячо обсуждаемая тема, и, как я упоминал в своей статье «WordPress не идеален» некоторое время назад, она в основном сводится к проблемам с плагинами и темами, а не с самим WordPress.

Nonces — один из лучших способов защитить пользователей от возможных угроз. Они используются для защиты действий пользователя, инициированных плагином, таких как отправка формы, удаление сообщения или что-либо еще, что может раскрыть базу данных.

В этом проекте WordPress выходного дня я опишу проблему, для решения которой предназначены одноразовые номера, и то, как вы можете использовать их, чтобы сделать свои продукты более безопасными.

Зачем нужны одноразовые номера

Допустим, вы пишете плагин, который позволяет пользователю удалять сообщения из внешнего интерфейса. Для простоты механизм удаления сообщения представляет собой ссылку, которая ведет на http://mysite. com/2015/02/12/my-article/?delete=true . Другими словами, ссылка на статью с прикрепленной строкой запроса.

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

Это кажется безопасным, верно? В конце концов, вы проверили, был ли пользователь администратором, верно?

К сожалению, этого недостаточно. Есть две вещи, которые вам нужно проверить, прежде чем предпринимать каждое действие: разрешение и намерение.

одноразовых номера WordPress могут помочь повысить безопасность вашего сайта.

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

Представьте, что я отправил вам электронное письмо, в котором говорится, что я нашел опечатку в одном из ваших сообщений и дал ссылку на нее. Если я создам ссылку в электронном письме, вы не увидите цель, только кликабельный текст. Поэтому, если я добавлю строку ?delete=true в конец, вы в конечном итоге удалите сообщение, даже если вы никогда этого не хотели.

Здесь на помощь приходят одноразовые номера. Одноразовый номер — это специальный код, который генерируется в источнике действия. При использовании одноразового номера ссылка может выглядеть примерно так: http://mysite.com/2015/02/12/my-article/?delete=true&_wpnonce=234283223 . Поскольку одноразовый номер всегда будет другим, я не смогу отправить вам простую ссылку, так как процесс удаления не будет работать без правильного одноразового номера.

Что такое одноразовые номера?

Nonce — это сокращение от «число, используемое один раз», и они используются в криптографии для защиты данных путем отправки рядом с ними одноразового числового кода.

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

Использование одноразовых номеров WordPress

Этот процесс довольно прост и состоит из двух шагов: вы создаете одноразовый номер в начале действия (помещаете его в ссылку или как скрытое поле в форме) и проверяете его на цели. Вам нужно знать только пару функций, вот:

Добавление одноразовых номеров в формы

Чтобы добавить одноразовый номер в форму, вам нужно добавить скрытое поле с именем и значением. В WordPress есть функция wp_nonce_field() .

В самом простом виде вы можете использовать его только с одним параметром:

Loading gist 62f2039a45defb78df32bc9e737ac6fe

Это создаст для вас два поля, одно для nonce и одно для реферера, которые WordPress также может проверить.

Загрузка сути ea48c47ca7b31cb4cd9

e4353d74

На самом деле функция дает вам четыре параметра для точной настройки. Первый параметр определяет действие, выполняемое с одноразовым номером. Это не отображается в поле, оно содержится в хэше. Второй параметр изменяет имя, которое равно 9.0011 _wpnonce по умолчанию. Третий параметр — это логическое значение, которое определяет, проверяется ли реферер (true по умолчанию). Наконец, четвертое — логическое значение, которое определяет, отображается ли поле — по умолчанию оно равно true.

Одно важное правило: всегда делайте имя действия (первый параметр) как можно более конкретным. Не просто назовите его «удалить-пост», сделайте его «удалить-пост-[идентификатор_сообщения].

На другом конце действия вам нужно будет проверить одноразовый номер. Это то место, куда приведет вас параметр действия формы. Чтобы проверить одноразовый номер, используйте этот простой код:

Загрузка gist 996265fdc885d0bbffeb9c79a2405fa8

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

Добавление одноразовых номеров к URL-адресам

Иногда вам нужно инициировать действие через ссылку, особенно в области администрирования. Поскольку ссылки, по сути, передаются как параметры запроса, вы также можете легко добавить их к ссылкам.

Вы можете использовать wp_nonce_url() , чтобы сделать это. Вот как.

Загрузка gist 433c2c526329b1f5f60a23096b62556e

Конечным результатом будет URL-адрес, который выглядит примерно так: http://mysite.com?p=553&_mynonce=7278c82a8f3 . Как видите, это очень похоже на то, что мы делали с формами, с той лишь разницей, что одноразовый номер передается в URL как параметры GET .

Вы можете проверить одноразовый номер тем же методом, что и раньше. На этот раз давайте добавим правильное имя действия с идентификатором и используем ПОЛУЧИТЬ переменных.

Загрузка содержимого cf5e01737f7fea5d68a9d0fc4e2bfdec

Обзор

Это было довольно просто, не так ли? И это добавляет большой уровень безопасности вашему продукту.

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

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

Изображение предоставлено: Pixabay.

Метки:

  • выходные проекты wordpress

Что такое Nonce в WordPress?

По Майкл Брокбэнк / WordPress

  • Фейсбук
  • Твиттер
  • LinkedIn
  • Более

Что такое Nonce в WordPress?

Nonce — это мера безопасности, используемая в WordPress для защиты от вредоносных атак. Nonces генерируются как случайные символы для каждого запроса и сохраняются в сеансе пользователя, что позволяет проверить их перед обработкой запроса.

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

Nonces также используются для предотвращения атак с подделкой межсайтовых запросов (CSRF), которые обманом заставляют пользователей выполнять определенные действия на своем веб-сайте без их ведома или согласия.

Наконец, одноразовые номера помогают обеспечить безопасность данных, отправляемых из WordPress на сервер.

Зачем использовать одноразовые номера WordPress

Одноразовые номера являются неотъемлемой частью безопасности WordPress, помогая защитить веб-сайты от вредоносных атак. Включая уникальный одноразовый номер в каждый запрос, WordPress может убедиться, что запрос исходит от доверенного пользователя, и обработать его соответствующим образом.

Nonces также помогают защититься от CSRF-атак и обеспечивают безопасность любых данных, отправляемых на сервер. Вообще говоря, одноразовые номера могут гарантировать, что будут выполняться только авторизованные действия, помогая обеспечивать безопасность сайтов WordPress.

Как создать одноразовый номер в WordPress

Создание одноразового номера в WordPress очень просто и может быть выполнено с помощью функции wp_create_nonce(). Эта функция принимает один аргумент, строку символов, известную как «соль», для создания уникального значения для каждого запроса.

Затем сгенерированный одноразовый номер следует добавить в процесс проверки, гарантируя, что обрабатываются только утвержденные запросы. Кроме того, одноразовые номера должны проверяться при обработке запроса, чтобы убедиться, что предоставленный одноразовый номер действителен и исходит от авторизованного пользователя.

Наконец, важно отметить, что одноразовые номера WordPress имеют ограниченный срок службы, обычно от 12 до 24 часов. Это гарантирует, что старые одноразовые номера не могут быть использованы для выполнения вредоносных действий на веб-сайте.

Чтобы продлить срок службы одноразового номера, разработчики WordPress могут использовать функцию

wp_verify_nonce() , которая проверяет действительность одноразового номера перед обработкой запроса.

Добавить комментарий

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