Authlogic讓我很緊張,因爲它強制要求用戶模型,:password
是attr_accessible:用戶的密碼字段應該是attr_protected嗎?
class User < ActiveRecord::Base
attr_accessible :password, :email
...
end
我與這種不舒服的原因是,在某人的設置密碼字段正常的設計模式是你在進入新密碼之前需要重新確認舊密碼。
這可以防止某人更改某人的密碼(並且在csrf_meta_tag
之前也可以防止跨網站的僞造)。
私自交換別人的密碼
然而,隨着以attr_accessible
需要:password
,這是簡單的人提交任何新的密碼,並打破自己好友的帳戶。
我想給:password
場被默認爲attr_protected
,這樣雖然可以被更新,這是由我來啓用,而不是由我來保護它。
如果您有「忘記密碼」,這種保護方式甚至有問題嗎?
我不擔心什麼嗎?我不知道,因爲你有一個「密碼重設傳送到我的郵箱」功能,它是一種多餘的,但它還是把額外的屏障英寸
編輯
我措辭我最初的問題在令人困惑的方式。我不是說我使用attr_protected來阻止人們登錄對方的賬戶,我使用的是完全正常的身份驗證設置。
我指的是保護您免於從您的計算機上打開您的帳戶打開您的帳戶,某人坐下並更改密碼的攻擊類型。這可以(主要)通過在創建新密碼之前需要舊密碼來保護。即使密碼設置爲att_accessible,這也是完美的,但需要先刷新新密碼。
如果舊密碼需要更新,我會感覺更舒服,如果密碼是attr_protected
,那麼這將更加清潔。
但密碼不是按原樣使用;要更新某些內容,需要將其加密值與用戶的加密值進行比較。如果不匹配,操作應該失敗,不是? –
不幸的是 - 沒有authlogic的默認設置,你只需提供一個新的密碼並更新 –
我不確定我關注 - 是否有自動生成的「更改密碼」頁面? (如果有的話,我從來沒有使用過。)如果不是這樣,這仍然很容易處理,因爲你仍然可以保護它免受大規模分配和手動設置,和/或仍然按照我上面所說的去做,不是嗎? –