2012-02-09 5 views
4

私は 'omniauth-openid' gemを使ってOpenIDログインを実装しています。私のOmniAuthコールバックメソッドでは、私はこのような何か(それが重要な詳細を簡略化しますが伝えるだ)を実行します。omniauth-openid gemを使ってOpenIDログインを安全にする方法は?

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プロバイダによって真に送信され、悪意のある人によって変更されていないことを確認する方法がいくつかありますか?

+0

私は事実は分かりませんが、OmniAuthは非常に多くのことをバックグラウンドで行っています。私は、OpenIDプロトコルが安全かどうかについて、あなたは疑問に思っています。 – Andrew

答えて

-1

「protect_from_forgery」はそれだと思います。 http://ruby.about.com/od/mr/g/protectforgery.htm

+0

'protect_from_forgery'は、人々がセッションIDを偽造することを防ぎますが、私は" info.email "パラメータを偽装することを話しています。また、OpenIDを使って認証するときには、GoogleなどがRailsセッショントークンを返すことがないため、通常はOpenIDコールバックURLの 'protect_from_forgery'をオフにする必要があります。 –

関連する問題