Rails 登录重置会话

2024-02-01

最佳实践是在用户成功登录时调用reset_session并在用户注销时再次调用它吗?这样做有任何副作用/问题吗?


The Ruby on Rails 安全指南 http://guides.rubyonrails.org/security.html#sessions建议在身份验证成功后重置会话 ID,以防止会话固定 https://www.owasp.org/index.php/Session_fixation漏洞。本质上,会话固定涉及攻击者设置您的会话 id(或者当您点击登录页面时能够知道 id 的其他方法),并且在您成功进行身份验证后,攻击者使用以下方法为自己的浏览器设置 cookie您的会话 ID,随后将被验证为您。身份验证成功后重置会话 ID 可以完全缓解此类漏洞。创建操作中的一些示例代码可能如下所示:

def create
  user =  User.find_by_email(params[:email])
  if user && user.authenticate(params[:password])
    old_values = session.to_hash
    reset_session
    session.update old_values.except('session_id')
    session[:athlete_id] = athlete.id
    redirect_to root_url, notice: "Authentication successful!"
  else
    flash.now.alert = "Invalid credentials"
    render "new"
  end
end

请注意,如果您希望保留任何数据,请务必在重置会话之前复制会话。

至于在注销时调用reset_session,是的,这也是最佳实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 登录重置会话 的相关文章

  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 密码盒和 MVVM

    我们有以下场景 MVVM 用户界面 用户可以在其中输入密码 实际上是一个PasswordBox 应该做一些工作的服务器 服务器连接到一些需要身份验证的数据库 我已经读过这个关于MVVM中PasswordBox的问题 https stacko
  • Rails 多租户架构,限制多个租户的访问范围

    目前我们有一个单租户数据库架构 MySQL 运行着超过 100 个数据库 我们使用 Apartment gem 切换子域上的数据库连接 一切都很顺利 然而 我们现在需要创建所谓的 伞 客户端 它可以访问一组现有客户端的所有数据 我不认为这对
  • 设计良好且安全的 Web 应用程序示例

    大多数人都会意识到OWASP WebGoat http www owasp org index php Category OWASP WebGoat Project或 Foundstone 的哈克姆图书 http www foundston
  • Heroku 上的 Google Vision API 身份验证

    在 Heroku 上验证 Vision API 的最佳 简单方法是什么 在开发中我只使用 vision Google Cloud Vision new project instacult keyfile path to keyfile js
  • Ruby on Rails 从视图路由到控制器中的自定义方法

    我有一个控制器名称帖子 在我的 config routes rb 我用过这个 resources posts app controllers posts controller rb class PostsController lt Appl
  • 海报风格的电子邮件验证

    我正在考虑创建一个类似于Posterous的服务 用户可以在其中发布到固定地址 例如 电子邮件受保护 cdn cgi l email protection然后帖子的身份验证将基于发件人地址和标头签名的某种组合 Posterous 似乎正在做
  • 为什么对参数哈希进行切片会在批量分配时带来安全问题?

    通过批量分配来预防安全风险的官方方法是使用属性可访问 http api rubyonrails org classes ActiveModel MassAssignmentSecurity ClassMethods html 然而 一些程序
  • ActiveRecord 布尔验证接受非布尔值

    我正在尝试验证属性是否为布尔值 即 true 或 false 从我期望的 Rails 指南中 validates new out of stock inclusion in true false 可以工作 但它接受非布尔值 例如 Hi 作为
  • 使用 RSpec 进行 Rails 片段缓存测试

    我觉得这是一个没有太多记录的主题 至少我在这里找到最佳实践时遇到了很多麻烦 我使用 cache key 在视图中进行片段缓存 tbody employees each do employee cache employee do tr emp
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • Rails 7 缺失部分

    我正在升级到 Rails 7 1 并在使用 JS 部分的视图中遇到奇怪的错误 缺少部分 account stripe js erb application stripe js erb 与 locale gt fr formats gt ht
  • 安全网络登录示例/教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为 Web 应用程序创建登录表单的方法有很多种 但大多数方法都存在这样或那样的缺陷 密码以明文形式传输
  • 如何在 Rails 中将随机日期时间四舍五入到小时开始?

    基本上我想获得去年内的随机日期时间 rand 1 year ago gt Sun 22 Sep 2013 18 37 44 UTC 00 00 example 但是我该如何指定或限制这个时间呢 例如 Sun 22 Sep 2013 18 0
  • 将带撇号的字符串传递给辅助方法无法正确显示

    我正在使用 Rails 教程中的辅助方法 它将两个字符串连接在一起 以便在视图中的标题选择器中使用 它工作得很好 除非字符串中有撇号 当 group name 包含撇号时 结果如下 这是方法 app helpers application
  • Rails - 格式日期字段

    如何设置 date field 的日期格式样式 我得到了以下表格 这是为日期字段呈现以下 HTML
  • 使用简单的表单轨道删除日期选择中的日期时间和时间分隔符

    如何删除由名为 simple form 的 gem 创建的日期选择中的日期时间分隔符和时间分隔符 我想我必须重写initializesimple form 用于创建日期选择或在表单输入中传递哈希选项的方法 但这不起作用 我尝试这样的事情 f
  • pow 说: Bundler::GemNotFound:无法在任何源中找到 rake-0.9.2.2

    我有一个运行良好的 Rails 应用程序rails s 但是当我尝试使用 pow 加载它时 我收到此错误 Bundler GemNotFound Could not find rake 0 9 2 2 in any of the sourc
  • 什么是 PHP session_start()

    它是否基于 cookie 启动当前会话 从 PHP 网站上得到的 PHP如何控制会话 如果我在用户打开我的登录页面时启动会话 我什至可以使用该会话做什么 我可以使用当前会话来获取有关登录用户的信息吗 PHP 会话系统允许您将数据安全地存储在
  • Unicorn + Rails + 大型上传

    我试图在使用 Rails 在 Heroku 上运行 Unicorn 时允许进行大型上传 但我意识到任何大型上传可能需要比 Unicorn 工作线程的超时时间更长的时间 这意味着 我见过这种情况发生 Unicorn 主进程将杀死上传大文件的工

随机推荐

  • MATLAB - 具有布尔值的棘手颂歌系统

    编辑 感谢您的支持 现在我终于添加了图像 添加了完整的 m file 尽管我认为没有必要 代码的关键是 xp 2 x 2 gt X2 xp 3 gt 0 xp 3 x 3 gt X3 xp 2 gt 0 完整代码 function xp u
  • Guice的injectMembers方法

    我了解使用构造函数注入相对于 setter 注入的好处 但在某些情况下我必须坚持仅使用基于 setter 的注入 我的问题是如何使用注入所有基于设置器的注入类的成员injector injectMembers method I am cal
  • getGenericParameterTypes 和 getParameterTypes 之间的区别

    我正在尝试了解之间的区别getGenericParameterTypes and getParameterTypes方法 我知道有人回来了Class 和另一个Type 但真正的区别是什么 考虑方法 public void method1 T
  • Git克隆存储库错误:RPC失败;结果=56,HTTP 代码=200

    我已经使用 Git 存储库几年了 但仍然感觉像个新手 非常欢迎帮助 它开始克隆一段时间 remote Counting objects 22394 br remote Compressing objects 100 12314 12314
  • iconv 返回奇怪的结果

    我正在研究一种方法来解决在 PHP 中创建帐户的自动脚本中使用特殊字符的问题 由于电子邮件地址和其他地方不需要特殊字符 因此我试图删除它们 但在将它们提供给脚本之前我无法删除它们 因为用户名必须正确显示给其他用户 例子 J rgen G t
  • scala 类中属性的可见性

    我通过以下方式在类的构造函数中定义了一个属性 class Step val message String 当我尝试访问时message从 Java 代码中获取可见性错误的值 为什么 如果添加 scala reflect BeanProper
  • 块递归和破坏保留周期

    为了更好地说明问题 请考虑以下块递归的简化形式 block void next int int index if index 3 return int i index next i next 0 XCode 启用 ARC 警告 在此块中强烈
  • 在 TypeScript 中输入 gql-tag

    我正在使用 GraphQL 并且希望严格输入gql 是否有可能使result变量的形状ResultData即使用最新版本的 TypeScript 它只与输入有关 与运行时无关 interface Data one string two nu
  • iOS 中的应用内购买测试

    我在用Xcode 8 0 斯威夫特 3 0并在我的 iPad 上进行应用程序购买测试 我想使用沙盒用户测试应用程序购买 设备设置中没有添加账户 问题是我没有获取产品列表来响应产品请求代码 请看一下我的代码 let PRODUCT ID MY
  • 使用大括号括起来的初始值设定项列表初始化结构时出错

    struct CLICKABLE int x int y BITMAP alt BITMAP bitmap CLICKABLE alt 0 CLICKABLE input 1 2 0 0 这段代码给我以下错误 无法从大括号括起来的初始值设定
  • 将表格放置在浮动图像旁边

    我想将表格放置在浮动图像旁边 同时保持表格宽度为 100 并且不会溢出父元素的宽度 我尝试了各种技术 但尚未达到我想要的结果 我的意思是 http jsfiddle net AX3UR 3 http jsfiddle net AX3UR 3
  • 查询过滤器表达式树的解析器

    我正在寻找一个可以对查询过滤器进行操作的解析器 然而 我不太清楚这些术语 所以事实证明这是一项艰苦的工作 我希望有人能帮助我 我读过有关 递归下降解析器 的内容 但我想知道这些是否适用于成熟的语言解析器 而不是我正在寻找的逻辑表达式评估 理
  • Apple Vision 框架 – 从图像中提取文本

    我正在使用 iOS 11 的 Vision 框架来检测图像上的文本 文本检测成功 但是我们如何获取检测到的文本呢 识别图像中的文本 VNRecognizeTextRequest适用于 iOS 13 0 和 macOS 10 15 及更高版本
  • 如何找到 3D 向量的哈希值?

    我正在尝试使用固定网格大小的方法执行宽相碰撞检测 因此 对于每个实体的位置 x y z 每个浮点数类型 我需要找到实体位于哪个单元格中 然后我打算将所有单元格存储在哈希表中 然后迭代报告 如果有 碰撞 所以 这就是我正在做的事情 网格单元的
  • 即使已安装,Plotly.io 也看不到 psutil 包

    我正在尝试执行以下代码 import numpy as np import pandas as pd import matplotlib pyplot as plt import matplotlib matplotlib inline i
  • 设置图例/图案与堆叠条形图中文本之间的空间

    我有 gnuplot 数据文件 CS 31 73 18 32 20 78 22 88 1 97 1 29 0 90 2 01 FL 43 27 29 45 15 64 6 55 1 64 1 27 2 18 0 00 HB 32 44 20
  • ReactTestUtils.Simulate 无法通过 addEventListener 触发事件绑定?

    这是示例 http jsfiddle net hulufei twr4thuh 7 http jsfiddle net hulufei twr4thuh 7 绑定时才起作用onClick在虚拟 dom 中 如第 18 行 但是如果我注释第
  • solr教程无法创建集合

    我正在尝试运行 solr 6 6 0 教程 运行后 bin solr start e cloud noprompt 它在端口 8983 和 7574 上启动 solr 但无法创建入门集合 并出现以下错误 ERROR Failed to cr
  • 在 Mac/iPhone 上进行联网的最有效方法?

    在 Mac 和 iPhone 上建立 TCP 连接或发送 UDP 数据报的最有效方法 即工作量与可读性和可维护性的最佳比率 是什么 我非常熟悉经典的 BSD 套接字 但我现在的目标不是可移植性 我只是想快速完成一个小项目 我很想拥有一个 A
  • Rails 登录重置会话

    最佳实践是在用户成功登录时调用reset session并在用户注销时再次调用它吗 这样做有任何副作用 问题吗 The Ruby on Rails 安全指南 http guides rubyonrails org security html