2008-06-11
易在开发中忽略的rails安全问题
关键字: rails 安全
有些安全问题在rails的开发中会被忽略的,比如rails在创建或者更新一个model的时候,支持一种mass-assignment的赋值方式,比如在controller中,创建一个user model记录
代码1:
这个场景通常发生在网站注册新用户,假如user有属性用户积分point,注册表单如是写:
如果有恶意用户更改了一下表单提交参数,增加point=10000,那么上述代码1就会存在安全漏洞,因为新注册用户可以获得任意积分!
要消除这个漏洞,做法是将point属性设置为protected
注意这里protected不是指外界不能读和写point属性,而是指使mass-assignment对point属性失效,这样代码1就是安全的了。
在更新属性时,必须显式赋值
其他诸如sql注入等安全问题,可见
http://manuals.rubyonrails.com/read/chapter/47
代码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
- 15:00
- 浏览 (74)
- 评论 (0)
- 分类: ruby & rails
- 进入论坛
- 相关推荐
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4257 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
单元测试势在必行的一个例 ...
open2ye 写道以上代码还有错误 save! 是抛错的.save 返回值才是 ...
-- by caryl -
开始攻克英语听力之旅(二 ...
fxbird 写道我怎么觉得这是一种隐性广告。我练听力目前用新概念3,听力其实就 ...
-- by Durian -
开始攻克英语听力之旅(二 ...
回复asd: 很抱歉,在我写的博客上, http://seemoon.javae ...
-- by seemoon -
开始攻克英语听力之旅(二 ...
老大,你的一呢,能不能给个link学习下,我往后翻了几页没有找到。
-- by asd -
开始攻克英语听力之旅(二 ...
我怎么觉得这是一种隐性广告。我练听力目前用新概念3,听力其实就是看词汇量,词汇量 ...
-- by fxbird






评论排行榜