Насколько безопасна «Аутентификация с нуля» от Railscasts? - PullRequest
2 голосов
/ 22 декабря 2011

Я взвешиваю все за и против использования «Аутентификации с нуля» (как это реализовано в этом Railscast ) против использования Devise.

Я использую собственное хранилище данных,поэтому использовать Devise не так просто, как просто следовать README.Это потребовало бы написания пользовательского адаптера ORM r, что далеко не тривиально.

Учитывая все это, Railscast Auth с нуля кажется намного проще в реализации.

Насколько это безопасно?

Обновление: Я должен был указать, что я использую Parse.com в качестве хранилища данных.Это означает, что они заботятся о хешировании паролей и ограничении уникальности имен пользователей.

Ответы [ 2 ]

5 голосов
/ 22 декабря 2011

Они оба работают, используя bcrypt для генерации соленого хэша пароля, с той лишь разницей, что devise (по умолчанию) использует более высокую стоимость для хэша (то есть потребуется больше циклов ЦП для его перебора), ноКонечно, вы могли бы легко добавить это к коду Railscast, что примерно эквивалентно в этом отношении.

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

Вы, очевидно, могли бы позаимствовать бит безопасного сравнения из devise, но это показывает, что существуют неочевидные проблемы.

Очевидно, что разработка дает вам гораздо больше, чем просто аутентификация!

2 голосов
/ 22 декабря 2011

Эта экранная трансляция использует библиотеку bcrypt-ruby, которая является реализацией Ruby bcrypt , которая основана на шифре Blowfish .Преимущество bcrypt заключается в том, что в вычислительном отношении взломать пароль, сгенерированный этой системой, дорого в вычислительном отношении, и что стоимость генерации этих паролей может быть увеличена по мере необходимости, чтобы сделать его более безопасным, за счет времени вычисления, которое потребуется длявремя генерации.

Для получения дополнительной информации, проверьте BCrypt :: Password RDoc.

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