浏览 2045 次
锁定老帖子 主题:易在开发中忽略的rails安全问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-11
代码1: @user=User.new(params[:user]) @user.save! 这个场景通常发生在网站注册新用户,假如user有属性用户积分point,注册表单如是写: <form ..> <input name='login_name'/> <input type='password' name='password'/> <input type ='password' name='c_password'/> ... </form> 如果有恶意用户更改了一下表单提交参数,增加point=10000,那么上述代码1就会存在安全漏洞,因为新注册用户可以获得任意积分! 要消除这个漏洞,做法是将point属性设置为protected attr_protected :point 注意这里protected不是指外界不能读和写point属性,而是指使mass-assignment对point属性失效,这样代码1就是安全的了。 在更新属性时,必须显式赋值 @user.point=params[:user][:point] ... 其他诸如sql注入等安全问题,可见 http://manuals.rubyonrails.com/read/chapter/47 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |