OmniAuthを使ったFacebookログインを実装していますが、
Facebook認証後にユーザー名・メールアドレスなど追加情報を入力させるフォームをはさんで、ユーザー登録を行いたいと思っています。
https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview
上記OmniAuthのwikiページを参考にしていますが、その中で、以下のような実装があります。
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def facebook # You need to implement the method below in your model (e.g. app/models/user.rb) @user = User.from_omniauth(request.env["omniauth.auth"]) if @user.persisted? sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? else session["devise.facebook_data"] = request.env["omniauth.auth"] redirect_to new_user_registration_url end end def failure redirect_to root_path end end
session["devise.facebook_data"] = request.env["omniauth.auth"]
というところでセッションにfacebookから返却されたデータを入れていますが、これはセキュリティ的に大丈夫なのでしょうか?(追加情報を入力するフォームへ遷移する前に、この処理が入ります。)
「体系的に学ぶ安全なWebアプリケーションの作り方」という本では、セッションIDの固定化攻撃の対策のため、ログイン前に秘密情報をセッション変数に格納しないとありますが、これに反しているのではないかと思っています。
また、もし上記実装がセキュリティ的に少しでも不備がある場合は、代替案としては他に何かありますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/29 12:08