加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 带有Authlogic的Rails 3并调用reset_session

发布时间:2020-12-17 02:02:37 所属栏目:百科 来源:网络整理
导读:RoR Security Guide声明您应该“发出新的会话标识符并在成功登录后声明旧的会话标识符无效”,使用reset_session方法来对抗会话固定. 使用Authlogic时,我无法找到有关调用reset_session的任何指导.是否只是在控制器方法中包含该方法的情况(如下所示)? 我只关
RoR Security Guide声明您应该“发出新的会话标识符并在成功登录后声明旧的会话标识符无效”,使用reset_session方法来对抗会话固定.

使用Authlogic时,我无法找到有关调用reset_session的任何指导.是否只是在控制器方法中包含该方法的情况(如下所示)?

我只关心为Authlogic引起问题,因为我可以在调用reset_session之前在会话哈希中看到user_credentials和user_credentials_id键和值.

class UserSessionsController < ApplicationController

  def create
    @user_session = current_client.user_sessions.new(params[:user_session])
    if @user_session.save
      reset_session
      flash[:success] = I18n.t(:msg_login_success)
      redirect_back_or_default application_root_path
    else
      render :action => :new
    end
  end

解决方法

作为参考,这是我目前的方法:

def create
  @user_session = current_client.user_sessions.new(params[:user_session])

  if @user_session.save
    # reset session to counter session fixation
    # whilst retaining values except for those that the application has created specific to the current user
    temp_session = session.merge("current_user" => {}).clone
    reset_session
    session.reverse_merge!(temp_session)
    # set flash msg and redirect
    flash[:success] = I18n.t(:msg_login_success)
    redirect_back_or_default application_root_path
  else
    render :action => :new
  end
end

根据http://guides.rubyonrails.org/security.html#session-fixation-countermeasures中的建议,在成功登录后仍然执行reset_session调用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读