`
ali
  • 浏览: 51948 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多
在一些不得不使用find_by_sql的场合,何如避免sql注入攻击?
简单有效DRY的方法:
where column = #{Base.connection.quote(value)}
分享到:
评论
7 楼 ali 2008-02-28  
ok,是我笔误,是paginate_by_sql.
paginate_by_sql 接受象[where id=?,params[:id]]这样的Array参数吗?
6 楼 robbin 2008-02-28  
明明是你写的不对嘛,怎么能怪find_by_sql呢?

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

我用占位符,请问你怎么给我SQL注入?

5 楼 ali 2008-02-28  
同上






4 楼 ali 2008-02-28  
不好意思,网络问题,重复提交了.
3 楼 ali 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]} 


在这种情况下,就有注入的可能

2 楼 hapybird 2008-02-28  
find_by_swql是新的函数吗?还是笔误?
我记得这样子就可以了吧,["where aa=?,bb=?,cc=?",$aa,$bb,$cc]
1 楼 robbin 2008-02-28  
你先说说看find_by_swql凭啥会有SQL注入问题?

相关推荐

Global site tag (gtag.js) - Google Analytics