Секретный вопрос относительно того, как следует сделать одноразовый номер Oauth - PullRequest
2 голосов
/ 26 февраля 2011

Могу ли я действительно сделать свои запросы более безопасными, используя что-либо еще, кроме случайной 30-символьной буквенно-цифровой строки для моего nonce?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2011

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

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

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

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

Таким образом, с 20-30 случайными символами вы можете быть достаточно уверены, что никогдагенерировать два идентичных одноразовых номера в течение секунды.Но 6–8 символов, как в примерах RFC, достаточно, если вы храните и проверяете сгенерированные вами одноразовые номера или готовы повторить попытку, если сервер отклоняет ваш одноразовый номер.

1 голос
/ 28 февраля 2011

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

0 голосов
/ 28 февраля 2011

Nonce используются для того, чтобы источник 1 мог подтвердить, что результат от источника 2 был получен из исходного источника, с которым он разговаривал.

Это делается максимум за несколько секунд.

одноразовые номера не имеют конкретного критерия их построения, но вы всегда должны принимать во внимание следующее:

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

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

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