Authlogic заставляет меня нервничать, потому что в модели пользователя :password
имеет значение attr_accessible:
class User < ActiveRecord::Base
attr_accessible :password, :email
...
end
Причина, по которой меня это не устраивает, заключается в том, что обычный шаблон дизайна для поля пароля вчьи-то настройки таковы, что вам необходимо подтвердить старый пароль перед вводом нового.
Это запрещает кому-либо изменять чей-либо пароль (а предварительные csrf_meta_tag
также предотвращали мошеннические подделки).
Смена чьего-либо пароля без разрешения
Однако с :password
, обязательным для attr_accessible
, кто-то может просто ввести любой новый пароль и взломать учетную запись своего приятеля.
Я бы хотел, чтобы в поле :password
по умолчанию было attr_protected
так что, хотя он может быть обновленным, я должен разрешить это, а не мое дело защитить его.
Имеет ли значение этот тип защиты, если вы «забыли пароль»?
Не беспокоюсь ли я о чем-либо?Я действительно понимаю, что, учитывая, что у вас есть функция «отправить сброс пароля на мою электронную почту», это своего рода избыточно, но все равно добавляет этот дополнительный барьер.
Редактировать
Я сформулировал свой начальный вопрос в замешательстве.Я не имею в виду, что я использую attr_protected, чтобы запретить людям входить в аккаунты друг друга, я использую совершенно обычную настройку аутентификации.
То, что я имею в виду, защищает от типа атаки от друга, когда вы оставляете свою учетную запись открытой на своем компьютере, кто-то садится за нее и меняет ваш пароль.Это может быть (в основном) защищено от необходимости запрашивать старый пароль перед созданием нового.Это вполне достижимо даже с паролем, установленным в att_accessible, но требует, чтобы вы сначала сбросили новый.
Я бы чувствовал себя более комфортно, если старый пароль требуется для его обновления, и это намного чище, если пароль * 1038.* на первом месте.