在rails中是否有可能如果发现sql注入漏洞,任何人都可以删除表。我看到一篇文章说 Rails 只执行单个 sql 语句,例如,如果我像这样运行原始 sql
ActiveRecord::Base.connection.execute("select * from users; drop table test_table;")
抛出异常
这是否适用于所有 rails activerecord 助手是否有任何其他方法可以删除表?
在rails中是否有可能如果发现sql注入漏洞,任何人都可以删除表。我看到一篇文章说 Rails 只执行单个 sql 语句,例如,如果我像这样运行原始 sql
ActiveRecord::Base.connection.execute("select * from users; drop table test_table;")
抛出异常
这是否适用于所有 rails activerecord 助手是否有任何其他方法可以删除表?
这个漏洞是什么?
该错误允许通过动态查找器方法进行 SQL 注入(例如 find_by_foo(params[:foo]))。我会稍微解释一下动态查找器。该错误影响所有 Ruby on Rails 版本。
一个已知的可利用场景是以下所有情况都适用:您正在使用 Authlogic(第三方但流行的身份验证库)。您必须知道会话秘密令牌。
还有其他可利用的场景,但这实际上取决于您的应用程序在做什么。由于无法证明某些东西不安全,因此即使您认为自己没有受到影响,您也应该认真对待该漏洞并进行升级。
这个漏洞不是什么?
对于那些了解 Rails 的人:
该错误不会影响正常的查找器方法(例如 find(params[:id]))。该漏洞无法通过请求参数加以利用。该错误不在 Authlogic 中。它在 Rails 中。恰好 Authlogic 触发了它。Devise(另一个第三方身份验证库)不会触发该错误。“参数”案例,是一个完全不同且不相关的问题。那里描述的问题非常严重,值得认真关注,因此请密切关注任何新的建议。
有关更多信息,请参阅rails sql injection