接受用于填充“url_for”方法的 URL 参数是否安全?

2023-12-13

我正在使用 Ruby on Rails 4.1.1,并且我正在考虑接受直接传递到的参数(通过 URL 查询字符串)url_for方法,这样:

# URL in the browser
http://www.myapp.com?redirect_to[controller]=users&redirect_to[action]=show&redirect_to[id]=1

# Controller
...
redirect_to url_for(params[:redirect_to].merge(:only_path => true))

采用上述方法,用户可以在执行操作后被重定向。不过,我认为人们可以任意输入params这可能会导致安全问题......

接受 URL 参数来填充是否安全url_for方法?什么是陷阱?最坏的情况会发生什么?


通过记录params在向我的应用程序请求期间,我注意到 Rails 添加了always :controller and action参数。也许这证实了url_for可以按上述方式使用,因为它受到内部保护并且按照 Rails 的预期工作。


这在内部是安全的,因为 Ruby On Rails 只会发出HTTP 重定向响应.

当你正在使用only_path这将保护您免受打开重定向脆弱性。这是攻击者发送的电子邮件,其中包含以下格式的链接(假设您的网站是example.com).

https://example.com?foo=bar&bar=foo&redirect=http://evil.com

当用户检查 URL 并看到它位于example.com他们认为单击该链接是安全的。但是,如果存在开放重定向,则用户最终会到达evil.com这可能会要求他们example.com在用户不注意的情况下设置密码。

仅重定向到您站点上的相对路径可以修复任何漏洞。

在您的情况下,您将让用户控制您的控制器、操作和参数。只要你的 GET 方法是safe(即没有副作用),攻击者无法通过创建用户打开的精心设计的链接来使用此功能。

总之,根据提供的信息,我没有看到您的应用程序存在网络钓鱼 URL 的任何风险。

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

接受用于填充“url_for”方法的 URL 参数是否安全? 的相关文章

  • BigDecimal 无法强制转换为 BigDecimal

    这应该很简单 但它却爆炸了 有任何想法吗 d BigDecimal new 2 0 YAML load a gt d to yaml TypeError BigDecimal can t be coerced into BigDecimal
  • 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?

    我不会在这里重复我的问题 但是有没有更有效的方法来写这个 def recruits names names for r in self referrals do names lt lt r display name end return n
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • 使用 Ruby 获取 AWS 区域名称

    我正在为 AWS 开发 Rails 应用程序 并希望为区域名称创建下拉菜单 例如 us east 1 等 如果有人已经创建了 gem 来获取它们 我想使用它 有人知道这样的 gem 或有用的 API 吗 适用于 Ruby 的 AWS 开发工
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • 在 ruby​​ 中读/写受密码保护和加密的文件

    我想加密一个 ruby 程序将从中加载数据的文件 此外 我需要程序在启动时提示输入密码 该密码将用于解密文件 换句话说 该文件需要加密地驻留在计算机上 只有拥有密码的用户才能运行该应用程序 我已经开始研究 openpgp 但据我了解 这仍然
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • 通过使用 Minitest 的 Rails,如何设置 RuboCop 在每次使用 rake 运行测试时自动运行?

    当我运行以下命令时 我想要RuboCop https github com bbatsov rubocop在测试运行之前检查我指定的应用程序目录 bundle exec rake test 我添加了以下任务lib tasks test ra
  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • 方法调用中是否有记忆约定?

    我想避免在方法调用中重新评估值 直到现在 我一直在这样做 def some method some method begin lot s of code end end 但它最终变得非常丑陋 在一些代码中 我看到类似以下内容 def som
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • Ruby mp3 Id3 解析

    目前我正在从事一个音乐项目 处理用户 mp3 上传 问题是我找不到适用于所有文件的 id3 库 我努力了id3 ruby and Mp3Info库 但它们都没有给我一致正确的结果 例如 最常见的问题 错误的流参数 比特率和采样率 有时是持续
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm

随机推荐

  • 如何从 Java 函数返回值?

    我正在尝试让以下程序运行 public class funWithNumbers public static void main String args int ten 10 int subend 7 int result ten sube
  • Android 图像位于 /assets 或 res/raw

    如果我想将一堆图像放入文件夹结构中 例如 我正在构建一个海滩应用程序 每个海滩都通过我的海滩详细信息活动显示 具体取决于从我的海滩列表中选择的海滩 然后我想显示来自该特定海滩的五张图像 每个海滩都会有一个文件夹 其名称与海滩的 id 相对应
  • 如何使用 Spring 4.0.6 全局设置 Hibernate 4.3.5.Final 的 FlushMode?

    我正在尝试使用 Hibernate 4 3 5 Final 和 Spring 4 0 6 升级我们的应用程序 我的应用程序中任何具有数据库写入操作的位置都会出现如下错误 Caused by org springframework dao I
  • JasperReports / iReport Designer:我可以有条件地显示乐队吗?

    我创建了一个报告如下 多个细节带 每个详细信息带包含 1 个表 每个表链接到 1 个数据集 每当查询的结果集返回空集 未找到结果 时 我可以隐藏详细信息带吗 我怎样才能做到这一点 在每个详细信息区域的 属性 中 您有一个名为 打印表达式 的
  • 更新到最新的 Angular cli 版本后,NG v 仍然显示旧版本号?

    我已发出以下命令 如图所示 我收到一条成功消息 说 Angular cli 已更新到 10 0 版本 但是当我运行 ng v 命令时 我得到了旧版本号 那么真的更新了吗 这里有什么问题呢 如何全局更新到最新版本 以便当我通过 cli 生成新
  • 将父级 ​​div 与浮动子级居中

    父级没有定义宽度 因为里面有未知数量的子级 为什么孩子会掉入新的队列以及如何预防 孩子们需要站在同一条线上 wrap position absolute left 50 top 50px height 40px transform tran
  • 防止 IE11 在 Angular 2 中缓存 GET 调用

    我有一个休息端点 它在 GET 调用上返回一个列表 我还有一个 POST 端点来添加新项目和一个 DELETE 来删除它们 这适用于 Firefox 和 Chrome POST 和 DELETE 则适用于 IE11 但是 IE11 中的 G
  • Matlab 中两个向量的直方图

    先谢谢您的帮助 我有两组平行向量 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  • 使用基本模板时如何避免重复上下文设置过程?

    使用时jinja2 基本 骨架 模板通常由许多其他模板扩展 我的基本模板之一需要上下文中的某些变量 并且在任何使用此基本模板的地方都必须重复设置过程 例如 我可能需要从数据库读取一些类别名称并将它们呈现为标题中的列表 现在我必须在使用基本模
  • java中如何比较字符串数组中的元素?

    我正在尝试在字符串数组中查找重复的单词 这是我的比较代码 for int j 0 j lt wordCount j for int i wordCount 1 i gt j i if stringArray i compareTo stri
  • 使用分隔符打印列表中的所有项目

    考虑这个用于打印逗号分隔值列表的 Python 代码 for element in list print element 在以下情况下 打印时不出现逗号的首选方法是什么element是列表中的最后一个元素 ex a 1 2 3 for el
  • 对于某些 HTML 内容,点击事件在 Safari Mobile 中不起作用

    在我的网络应用程序中 有一个针对移动设备的单独的导航栏 我希望当单击菜单按钮或单击网站中的其他任何位置时 此导航栏会折叠 它已经可以在任何移动浏览器中工作 但不能在 safari 移动浏览器中工作 在 safari 中 对于主页它也可以工作
  • 如何将openssl库与arm交叉编译器链接

    我有应用程序 test c 通过在主机 在 ubuntu 上 机器上使用 gcc 我成功编译并在主机上成功运行了应用程序 现在我想使用arm交叉编译器交叉编译相同的应用程序LPC1788 请指导我如何链接 openssl 库文件 我的 Mk
  • 创建 1D NumPy 数组的 NoN 填充元素的滑动窗口

    我有一个时间序列x 0 x 1 x n 1 存储为一维numpy大批 我想将其转换为以下矩阵 NaN NaN x 0 NaN x 0 x 1 NaN x 0 x n 3 x n 2 x 0 x 1 x n 2 x n 1 我想使用这个矩阵来
  • BundleTransformer.Less 根据上下文/请求注入变量

    我们希望使用捆绑机制System Web Optimization与 Less 变压器结合使用 问题在于同一应用程序 服务器为不同品牌的网站提供页面 因此 根据 SiteContext 使用相同的 less 文件 但 less 变量应使用不
  • 编译器如何处理字符串插值

    我正在对方法属性使用字符串插值 例如 const string User SomeUser const string Admin Admin Authorize Roles User Admin public IHttpActionResu
  • swiftui,动画应用于父效果子动画

    RectangleView有滑动动画 他的子TextView有旋转动画 我想当 Go 时 RectangleView 及其子组件 TextView 作为一个整体滑入屏幕 easeInOut 按下 并且 TextView 永远旋转 线性 但实
  • 在 VBA 中跨工作表指定 Excel 范围

    在VBA中 为什么以下会失败 Dim rng as Range rng Range Sheet1 Sheet3 A1 它抛出一个 HRESULT 异常 还有另一种方法可以在 VBA 中构造这个范围吗 请注意 您可以输入 SUM Sheet1
  • 高阶函数和 ST

    我正在玩http hackage haskell org packages archive vault 0 2 0 0 doc html Data Vault ST html并想编写如下函数 onVault f runST f lt gt
  • 接受用于填充“url_for”方法的 URL 参数是否安全?

    我正在使用 Ruby on Rails 4 1 1 并且我正在考虑接受直接传递到的参数 通过 URL 查询字符串 url for方法 这样 URL in the browser http www myapp com redirect to