Мой cookie-токен достаточно силен, чтобы использовать его в целях аутентификации пользователя? - PullRequest
1 голос
/ 12 февраля 2011

Я использую Ruby on Rails 3, и я бы знал, достаточно ли силен код, который я использую для установки значения cookie для аутентификации пользователей.

В моей модели у меня есть:

require 'digest'

class User < ActiveRecord::Base
  ...

  def make_cookie_id_salt(string)
    secure_hash("#{self.id}--#{string}")
  end

  def secure_hash(string)
    Digest::SHA2.hexdigest(string)
  end
end

В моем контроллере у меня есть:

cookies.signed[:current_user_id] = { :value => [@user.id, @user.make_cookie_id_salt(@user.id)], :expires => 15.days.from_now }

Достаточно ли сильно? Если нет, как я могу улучшить это ( сделать пример !) ?

Ответы [ 3 ]

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

Devise - еще один вариант.Это чрезвычайно настраиваемый, довольно СУХОЙ, с утомительным wiki .

На сегодняшний день я предпочитаю его над Authlogic.

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

Все, что помещается в куки, сохраняется в виде обычного текста.

Если вы установите куки, а затем проверьте куки в вашем браузере, вы заметите (в вашем случае имя куки будет current_user_id), чтоон представлен строкой символов, таких как: G8gcm9sbCB5b3VyIG93biBhdXRoIHRvIGt ... (Не совсем обычный текст, верно? Это на самом деле кодируется Base64, но вы можете легко прочитать его - require ('base64'); Base64.decode64 (string)).

Rails хранит специальный файл cookie _yourapp_session, который используется для проверки действительности файлов cookie.Например, если кто-то / что-то пытается изменить его, это будет отклонено.

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

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

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

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

Вместо того, чтобы пытаться создать свой собственный, я предлагаю использовать камень Authlogic. За несколько минут настройки вы получите полное решение для аутентификации, включая файлы cookie и многое другое. Если вы действительно хотите свернуть свои собственные, установите гем Authlogic и посмотрите, как они это делают.

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