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

ruby-on-rails-3.2 – CSRF令牌会话被重置

发布时间:2020-12-17 02:14:01 所属栏目:百科 来源:网络整理
导读:我正在为我的会话使用Rails 3.2.3和active_record_store. 我的理解是rails中的CSRF令牌存储在会话中,除非调用reset_session或由于某种原因会话被销毁,否则不应重置. 但是在远程表单通过ajax加载的某些地方,它包含与该页面上META标记中指定的不同的真实性标记
我正在为我的会话使用Rails 3.2.3和active_record_store.

我的理解是rails中的CSRF令牌存储在会话中,除非调用reset_session或由于某种原因会话被销毁,否则不应重置.

但是在远程表单通过ajax加载的某些地方,它包含与该页面上META标记中指定的不同的真实性标记.因此,在提交该表单时导致无效的令牌错误和reset_session.

def form_authenticity_token
  session[:_csrf_token] ||= SecureRandom.base64(32)
end

我无法确定会话[:_ csrf_token]被破坏并创建新令牌的有效进行会话?

解决方法

经过大量的狩猎,终于找到了这个问题.我直接在会话中存储模型对象,尽管使用了大小限制为65KB的活动记录会话存储,但会话在4kb之后被截断,这导致CRSF令牌被擦除并生成新的令牌.是啊!失误……永远不要在会话中存储模型对象,除非你有充分的理由不这样做.无论如何仍然试图弄清楚为什么即使在拥有一个活跃的记录会话存储后,我也无法在会话中存储更大的对象.

(编辑:李大同)

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

    推荐文章
      热点阅读