我正尝试使用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