wp_nonce_field не проверяется

У меня есть форма на моем сайте WordPress (4.9.1), которая включает в себя поле nonce (с wp_nonce_field ()) и отправляет сообщения в admin-post.php.

Я использую это очень просто …

<?php wp_nonce_field( $action, 'referer' ); ?>

…Это создает что-то вроде этого:

<input type="hidden" id="referer" name="referer" value="d6dd8e58dd" />
<input type="hidden" name="_wp_http_referer" value="/slug/?laorder=99371&amp;laid=92bbfca59e41a4938ce8c0751cfcd0c4a68e75c14bd94b981505cc037079280&amp;lauser=myemail%domain.com" />

Проблема в проверке:

if (! isset( $_POST['referer'] ) || ! wp_verify_nonce( $_POST['referer'], $action ) )

происходит сбой при некоторых (неизвестных) обстоятельствах: кажется, что он работает всегда при публикации в режиме инкогнито, и происходит сбой случайным образом для некоторых пользователей с разными браузерами (chrome, firefox или safari).

Все пользователи являются гостями.

Кто-нибудь знает, почему это случайный поведение происходит?

1

Решение

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

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

<img src="http://example.com/wp-admin/post.php?post=123&action=trash" />

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

источник

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]