如何使用omniauth-openid gem secure进行OpenID登录?

时间:2012-02-09 11:27:10

标签: ruby security openid omniauth

我正在使用'omniauth-openid'gem来实现OpenID登录。在我的OmniAuth回调方法中,我做了类似的事情(它已经简化但传达了重要的细节):

def google
  oauth = request.env['omniauth.auth']
  if @user = User.find_by_email(oauth.info.email)
    sign_in(@user) and redirect_to '/dashboard'
  end
end

这与GitHub上的OmniAuth文档显示的内容实际上相同;然而我觉得它非常不安全。攻击者所要做的就是手动更改回调URL中的info.email参数,他们可以像任何其他用户一样登录。

这是OmniAuth的一个根本缺陷吗?或者是否有某种方法可以确认传递给OmniAuth回调方法的参数是由OpenID提供程序真正发送的,而不是由坏人修改的?

1 个答案:

答案 0 :(得分:-1)

我认为这就是“protect_from_forgery”的用途。 http://ruby.about.com/od/mr/g/protectforgery.htm