Итоги CSRF против путаницы Nonce – они одинаковы?

В попытке сделать текущее приложение я развиваю более безопасным, я читал о токенах CSRF, а также Nonce. Думаю, я понял идею жетонов CSRF, но у меня проблемы с поиском «хороших и упрощенных», ресурсов и примеров Nonces.

Мой вопрос – это жетоны CSRF и Nonce то же самое? из того, что я мог бы собрать до сих пор, заключается в том, что оба эти метода имеют разные методы для достижения одной и той же цели, или я что-то неправильно понимаю?

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

Благодаря!

    Related of "Итоги CSRF против путаницы Nonce – они одинаковы?"

    Nonce обычно представляет собой случайную строку, которая добавляется для запроса просто изменить непредсказуемым образом данные, которые используются для вычисления подписи. Таким образом, nonce обычно не используется какой-либо бизнес-логикой на стороне сервера.

    В то время как CSRF-токен хранится где-то на сервере, передается клиенту и его нужно возвращать обратно на сервер для сравнения. И если совпадения – тогда ОК.

    Таким образом, в вашем случае лучше будет сохранять токен csrf один раз в переменной сеанса, например

    $_SESSION['csrf_token'] = bin2hex(random_bytes(16)); 

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

    (Если у вас нет random_bytes() , используйте random_compat для полиполяции.)

    Нет, они не то же самое.

    Nonce предотвращает повторные атаки (запрещает подслушивать хранение подписанного запроса и повторное представление его позже, например, если Алиса отправляет «Pay Bob $ 100», вы не хотите, чтобы кто-то пересылал это 100 раз).

    Ключи CSRF исправляют уязвимость, специфичную для HTML, при аутентификации действий пользователей, где сторонний веб-сайт может отправлять формы с учетными данными пользователя, просматривающего сайт (например, JavaScript на странице evil.example.com, отправляющей форму на facebook.com, используя ваш браузер, аутентифицируется как вы ).

    Знаки CSRF должны быть секретными, иначе у злоумышленника будет недостающая часть, необходимая для подделания запроса.

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

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

    Фактически, это очень часто полезное свойство, например, позволяет пользователям использовать кнопку «Назад» и повторно отправлять формы с исправленными значениями. Если вы реализуете CSRF-защиту с помощью механизма Nonce-like, вы получите ложные тревоги, когда пользователи будут обновлять представленные страницы.

    Простым способом предотвращения CSRF без Nonces является установка идентификатора сеанса в скрытом поле (не значение, хранящееся в сеансе, но идентификатор самого сеанса, то же самое, что вы сохраняете в cookie [ session_id() в PHP]) , Когда форма отправляется, проверьте, что идентификатор сеанса формы соответствует идентификатору в файле cookie. Этого достаточно для CSRF, так как злоумышленник не может знать значение cookie (CSRF позволяет злоумышленникам слепо отправлять cookie).

    Это то же самое. «Nonce» – это всего лишь одноразовый пароль. Он может служить криптографической солью, но в основном это просто случайное значение. См. WP: Nonce

    Но, чтобы подвести итог, nonce часто используется как токен CSRF. Это деталь реализации. Разница с другими вариантами использования заключается в том, что она позже утверждается.