浏览 1426 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-08-22
@topic_pages,@topics = paginate(:topics,
:conditions => conditions,
:per_page => 13)
上面是一个简单的分页查询语句,conditions是条件(如 'board_id=1')。如果conditions从页面转入,就需要考虑到SQL注入攻击的安全问题。比如用户把输入改成了 'board_id=1 or 1=1'。 怎么防范,谁做过方面的研究?? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
顶!
还有,像用radrails建的controller后它的edit等方法也都默认建好了,可以用controller/action/id这样的方法访问,如果别人直接用 http://www.domain.com/controoller/edit/1 这样的URL过来不是可以直接修改系统中的记录了吗?还是有什么地方可以设置或修改的。 (,可能有很多东西还没看到,希望,谢谢!) |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
你可以用rails内建的helper对这些参数进行过滤
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
:conditions => ['board_id = ?', params['board_id']]
用这样的语句就可以自动给用户输入加上引号,可以避免SQL Injection。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
simon_lin 写道 顶!
还有,像用radrails建的controller后它的edit等方法也都默认建好了,可以用controller/action/id这样的方法访问,如果别人直接用 http://www.domain.com/controoller/edit/1 这样的URL过来不是可以直接修改系统中的记录了吗?还是有什么地方可以设置或修改的。 (,可能有很多东西还没看到,希望,谢谢!) 这个在controller里要写权限判断逻辑,少不了的一步 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
robbin 写道 你可以用rails内建的helper对这些参数进行过滤
就是不知道是哪个方法 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
cvu 写道 :conditions => ['board_id = ?', params['board_id']]
用这样的语句就可以自动给用户输入加上引号,可以避免SQL Injection。 这样当然没问题,但如果传入参数千差万别,现在是查board下的所有topics,下次也可能是查user所属的所有topics。所以我选择在前台传入构造好的condition,后台方法就一个搞定了。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-28
:conditions => ['board_id = ?', params['board_id']]这种方法是官方推荐的防止注入的方法,Agile Web Development with Rails里面写的很清楚。
如果有很多参数可以用:conditions=>[conditions, params],参数传递进去是支持Hash的。 http://blog.waynedeng.com/article.asp?id=627。 你在前台构造好condition就不怕被伪造?传入后台执行可就危险了。 |
|
| 返回顶楼 | |









