【问题标题】:Protecting SQL injection in Rails在 Rails 中保护 SQL 注入
【发布时间】:2014-10-17 15:36:24
【问题描述】:

所以..有人试图进入我的服务器..

从日志中我看到他们正在尝试进行一些基于 php 的攻击,但我仍然想减轻这种情况..

他们正试图通过这个 URL 注入 SQL

/sign_in?t=login'+union+select+char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33)+--+

所以在 Rails 环境中,这在 params 哈希中作为

{"t"=>"login' union select char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33),char(38,126,33) -- "}

由于我将t 参数列入白名单,所以这里没有问题,但如果我忘记将那里列入白名单,我想确保其他网址都可以

首先,我不确定他们试图通过这种攻击达到什么目的。

第二,关于

Model.find params[:id]

Rails 在这种情况下会清理输入吗?还是我必须自己做?

【问题讨论】:

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


    【解决方案1】:

    只要不使用纯字符串构建自己的条件,比如:

    User.where("t LIKE '%#{params[:t]}%'")
    

    相反,它应该是以下数组条件:

    User.where("t = ?", params[:t])
    

    我认为这在大多数 Rails 应用程序中是非常安全的。

    未来阅读:http://guides.rubyonrails.org/security.html#sql-injection

    所以,如果您使用正确的 Rails 方法(它会为您处理清洁部分),我认为您不需要自己转义字符串

    【讨论】:

    • User.where("t = ?", "%#{params[:t]}%") 安全吗?
    • 是的。它将给出与User.where("t = ?", params[:t]) 相同的结果
    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多