Каков наилучший способ справиться с неудачной проверкой nonce? - PullRequest
4 голосов
/ 06 апреля 2011

У меня есть смутное понимание одноразовых номеров, но есть небольшая путаница.

Каков правильный ответ, когда проверка одноразового номера терпит неудачу?

При каких обстоятельствах проверка одноразового номера может потерпеть неудачу?Каков риск для подлинных пользователей?

1 Ответ

4 голосов
/ 06 апреля 2011

Цель одноразовых номеров с формами, как правило, двоякая: гарантировать, что данные отправляются только один раз, и гарантировать, что пользователь действительно выполняет отправку. Второй пункт, помогающий защитить от подделки межсайтовых запросов: http://en.wikipedia.org/wiki/Cross-site_request_forgery

Работа с ними зависит от контекста. Если пользователь заполняет форму, и одноразовый номер завершается неудачно, обновите страницу (предварительно заполните данные), скажите что-нибудь мягкое, например «К сожалению, возникла проблема, проверьте введенные данные и повторите попытку». Действительный пользователь может нажать «Отправить», атака будет сорвана, или пользователь хотя бы узнал о происходящем.

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

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

...