gpt4 book ai didi

ruby-on-rails - 接受用于填充 `url_for` 方法的 URL 参数是否安全?

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:35 29 4
gpt4 key购买 nike

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

# 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_for 方法的 URL 参数是否安全?什么是陷阱?在最坏的情况下会发生什么?


通过在请求我的应用程序期间记录 params,我注意到 Rails 总是 :controlleraction 参数。也许这证实了 url_for 可以按上述方式使用,因为它在内部受到保护并且可以像 Rails 预期的那样工作。

最佳答案

这在内部是安全的,因为 Ruby On Rails 只会发出 HTTP redirect response。 .

当您使用 only_path 时,这将保护您免受 Open redirect 的攻击。漏洞。这是攻击者发送电子邮件的地方,其中包含以下格式的链接(假设您的网站是 example.com)。

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

当用户检查 URL 并看到它位于 example.com 域时,他们认为它是安全的,因此单击该链接。但是,如果有一个开放的重定向,那么用户最终会进入 evil.com,这可能会在用户不注意的情况下要求他们的 example.com 密码。

仅重定向到您网站上的相对路径可修复所有漏洞。

在您的情况下,您让用户可以控制您的 Controller 、操作和参数。只要你的 GET 方法是 safe (即没有副作用),攻击者无法通过创建用户打开的特制链接来使用它。

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

关于ruby-on-rails - 接受用于填充 `url_for` 方法的 URL 参数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324563/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com