Как сделать вход в OpenID безопасным с помощью omniauth-openid gem? - PullRequest
4 голосов
/ 09 февраля 2012

Я использую гем 'omniauth-openid' для реализации входа в систему 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

Это фактически то же самое, что показывает документация OmniAuth на GitHub; и все же я чувствую, что это очень небезопасно. Все, что нужно сделать злоумышленнику, - это вручную изменить параметр info.email в URL-адресе обратного вызова, и он может войти в систему как любой другой пользователь.

Является ли это фундаментальным недостатком OmniAuth? Или есть какой-то способ подтвердить, что параметры, переданные методу обратного вызова OmniAuth, были подлинно отправлены поставщиком OpenID, а не изменены плохим парнем?

1 Ответ

0 голосов
/ 29 марта 2012

Я думаю, что это то, для чего "protect_from_forgery". http://ruby.about.com/od/mr/g/protectforgery.htm

...