论坛首页 入门讨论版 rails

paginate_by_sql(原为find_by_sql)中如何避免sql 注入

浏览 565 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2008-02-28
在一些不得不使用find_by_sql的场合,何如避免sql注入攻击?
简单有效DRY的方法:
where column = #{Base.connection.quote(value)}
   
最后更新时间:2008-02-28
你先说说看find_by_swql凭啥会有SQL注入问题?
   
0 请登录后投票
最后更新时间:2008-02-28
find_by_swql是新的函数吗?还是笔误?
我记得这样子就可以了吧,["where aa=?,bb=?,cc=?",$aa,$bb,$cc]
   
0 请登录后投票
最后更新时间:2008-02-28
robbin 写道
你先说说看find_by_swql凭啥会有SQL注入问题?


当用到sql聚合函数,比如sum groub by,而且附带有查询条件的时候,不得不用动态生成的查询语句,如下:
select orders.*,(select sum(PAIR) from items where  order_id=orders.id) 'count' from  
orders where id=#{params[:id]} 


在这种情况下,就有注入的可能
   
0 请登录后投票
最后更新时间:2008-02-28
不好意思,网络问题,重复提交了.
   
0 请登录后投票
最后更新时间:2008-02-28
同上
   
0 请登录后投票
最后更新时间:2008-02-28
明明是你写的不对嘛,怎么能怪find_by_sql呢?

find_by_sql ["select ...... where id = ?", params[:id]]

我用占位符,请问你怎么给我SQL注入?
   
2 请登录后投票
最后更新时间:2008-02-28
ok,是我笔误,是paginate_by_sql.
paginate_by_sql 接受象[where id=?,params[:id]]这样的Array参数吗?
   
0 请登录后投票
论坛首页 入门讨论版 rails

跳转论坛:
JavaEye推荐