我正嘗試使用Omniauth從頭開始進行身份驗證。從頭開始驗證 - cookies被篡改有多安全?
我跟着瑞安貝特的screencast。但在推出實施之前,我想了解一些事情。
在他的截屏,他在application_controller
一個helper_method
:以上
helper_method :current_user
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
代碼,user_id
檢查。
我知道sessions are encrypted(並存儲在cookie中)。但是,它們是可讀的,但不能修改。有人用虛假的user_id
劫持會話有多難?什麼阻止任何人從零開始創建cookie或通過一些「cookie注入器」方法(如果存在這樣的事情)。
我想了解這些cookie是如何被保護的。
感謝您的好解釋。所以當創建會話時,會話標識符與服務器端存儲的會話標識符相關聯。會話標識符用於驗證會話是否是真實的。但是,如果有人使用確切的會話標識符和僞造的user_id創建假cookie,該怎麼辦?這不會證實通過? – 2013-02-14 15:12:49
除了這不是Rails默認的行爲方式。您需要切換到ActiveRecord會話存儲以獲取此行爲。 – 2013-02-14 15:14:11
典型的會話cookie基本上只是'nameOfSession = long_ugly_alphanumeric_string'。沒有用戶名/密碼/那裏的數據。 JUST該字符串,用於告訴服務器會話激活時加載哪個會話文件/數據庫記錄/任何內容。這就是整個「猜測」業務進入的地方。如果散列長度足夠短/簡單(例如簡單遞增整數),那麼只需將會話cookie更改爲其他人的會話ID就可以劫持會話。但是如果哈希值足夠複雜,那是不太可能的。 – 2013-02-14 15:15:18