Почему я должен хранить хэш постоянного файла cookie входа и токена сброса пароля?

Я только что прочитал следующее:

И НЕ ХРАНИТЕ ПОСТОЯННЫЙ ИНТЕРФЕЙС COOKIE (ТОКЕН) В ВАШЕЙ БАЗЕ ДАННЫХ, ТОЛЬКО ЕГО ХЕШ! Токен входа является эквивалентом пароля, поэтому, если злоумышленник получит доступ к вашей базе данных, он/она сможет использовать токены для входа в любую учетную запись, как если бы они представляли собой комбинации логин-пароль в открытом виде. Поэтому используйте сильное хеширование с солью (bcrypt/phpass) при хранении постоянных токенов входа.

(в этом ответе: https://stackoverflow.com/a/477578/943102)

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


person Botond Balázs    schedule 17.11.2012    source источник


Ответы (1)


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

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

person austin    schedule 17.11.2012
comment
Спасибо. Очень жаль, насколько это очевидно, и я не подумал об этом. - person Botond Balázs; 17.11.2012
comment
Не проблема. Я рад, что вы читаете исчерпывающее руководство по аутентификации веб-сайтов на основе форм. Я многому научился благодаря этому. - person austin; 17.11.2012