rails为用户提供错误的会话cookie

时间:2013-10-04 02:26:40

标签: ruby-on-rails facebook session cookies

我们在Rails 3.2.13应用程序中使用omniauth和facebook登录。它在sessions_controller中具有非常标准的样板代码来管理用户会话。它使用CookieStore进行会话。这是sessions_controller:

class SessionsController < ApplicationController
  skip_authorization_check

  def new
    redirect_to '/auth/facebook'
  end


  def create
    auth = request.env["omniauth.auth"]
    user = User.where(:provider => auth['provider'], 
                      :uid => auth['uid'].to_s).first || User.create_with_omniauth(auth)
# Reset the session after successful login, per
# 2.8 Session Fixation – Countermeasures:
# http://guides.rubyonrails.org/security.html#session-fixation-countermeasures
    reset_session
    session[:user_id] = user.id
    user.add_role :admin if User.count == 1 # make the first user an admin
    if user.email.blank?
      redirect_to edit_user_path(user), :alert => "Please enter your email address."
    else
      redirect_to root_url, :notice => 'Signed in!'
    end

  end

  def destroy
    reset_session
    redirect_to root_url, :notice => 'Signed out!'
  end

  def failure
    redirect_to root_url, :alert => "Authentication error: #{params[:message].humanize}"
  end

end

前几天,我们团队的一名成员正在测试我们的生产版本,然后去登录应用程序。当她浏览应用程序时,她发现自己已经登录为另一位从未使用过该计算机的用户,或者实际上曾经在我们的大楼里。根据她的经历和我们后来的分析,似乎应用程序为她提供了该用户的会话cookie。经过大量研究后,我不明白如何发生这种情况,即机架/轨道框架可能会向错误的用户提供会话cookie。有没有人见过这个或听说过它?有关如何调试此内容或在何处放置日志记录的任何建议,以便更深入地了解可能出现的问题?

0 个答案:

没有答案