论坛首页 入门技术论坛

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

浏览 4126 次
该帖已经被评为新手帖
作者 正文
   发表时间: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 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics