【问题标题】:sql injection in railsRails中的sql注入
【发布时间】:2013-11-24 14:57:42
【问题描述】:

是否有可能在 Rails 中,如果发现 sql 注入漏洞,任何人都可以删除表。我看到一篇文章说 Rails 只执行单个 sql 语句,例如,如果我像这样运行原始 sql

ActiveRecord::Base.connection.execute("select * from users; drop table test_table;")

抛出异常

这是否适用于所有的 rails activerecord 助手是否有任何其他方法可以删除表?

【问题讨论】:

    标签: sql ruby-on-rails sql-injection


    【解决方案1】:

    这个漏洞是什么?

    该错误允许通过动态查找器方法进行 SQL 注入(例如 find_by_foo(params[:foo]))。我会稍微解释一下动态查找器。 该错误影响所有 Ruby on Rails 版本。

    一个已知的可利用场景是当以下所有条件都适用时: 您正在使用 Authlogic(第三方但流行的身份验证库)。 您必须知道会话秘密令牌。

    还有其他可利用的场景,但这实际上取决于您的应用在做什么。由于无法证明某些东西不安全,因此即使您认为自己没有受到影响,您也应该认真对待漏洞并进行升级。

    这个漏洞不是什么?

    对于那些了解 Rails 的人:

    该错误不会影响正常的查找器方法(例如 find(params[:id]))。 该漏洞无法通过请求参数加以利用。 该错误不在 Authlogic 中。它在 Rails 中。恰好 Authlogic 触发了它。 Devise(另一个第三方身份验证库)不会触发该错误。 “params”案例,是一个完全不同且不相关的问题。那里描述的问题非常严重,值得认真关注,因此请密切关注任何新的建议。

    更多信息请参见rails sql injection

    【讨论】:

    • 我已经浏览了所有可能的关于 sql 注入的文档,但是你无法在 sql 注入中删除一个表。
    猜你喜欢
    • 2011-02-27
    • 2021-07-18
    • 2017-05-15
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多