有些安全问题在rails的开发中会被忽略的,比如rails在创建或者更新一个model的时候,支持一种mass-assignment的赋值方式,比如在controller中,创建一个user model记录
代码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
分享到:
- 2008-06-11 15:00
- 浏览 1087
- 评论(0)
- 论坛回复 / 浏览 (0 / 2045)
- 查看更多
相关推荐
在Rails中,可以使用ActiveRecord来操作数据库。创建购物车模型(Cart)和商品模型(Product),定义它们之间的关系,如多对多关系,通过一个关联表记录每个购物车包含的商品及其数量。使用`has_and_belongs_to_many...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
在阅读这个博客后,读者可以学习到敏捷开发的原则,如迭代开发、持续集成以及如何在Rails框架中实现这些原则。 从给出的文件列表中,我们可以分析出Rails项目的典型结构: 1. **Rakefile**:这是Rails项目中的任务...
在Java世界中,框架如Struts、Tapestry、Hibernate、iBatis等提供了MVC架构的各个层面支持,然而过多的选择往往导致开发者的困惑,选择正确的框架并非易事。与此相比,.NET平台的Visual Studio .NET提供了一站式解决...
在Rails中,开发者可以快速构建功能丰富的、数据驱动的Web应用。这本书会详细讲解如何利用Rails的MVC(Model-View-Controller)架构模式来组织代码,其中Model代表数据模型,View负责展示,Controller处理业务逻辑并...
5. **测试驱动开发(TDD)**:作为敏捷开发的一部分,TDD在Rails中占有重要地位。书中详细介绍了Rspec和Capybara等测试工具的使用,以及如何编写单元测试、集成测试和功能测试,确保代码质量。 6. **RESTful API...
在这个开发环境包中,我们拥有Ruby 1.8.7版本和Rails 2.2.3版本,这两个组件构成了一个经典的开发组合。 Ruby 1.8.7是Ruby编程语言的一个早期稳定版本,发布于2010年,提供了许多改进和新特性。在Ruby 1.8.x系列中...
在Rails中,Ruby的元编程能力使得框架能够灵活地自定义和扩展。 Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于...
在Ruby on Rails中,开发者可以快速构建功能丰富的动态网站,因为它提供了大量的内置功能和库,如数据库连接、ORM(对象关系映射)系统ActiveRecord、模板引擎ActionView以及路由系统ActionController等。...
5. **会话(Session)**:Rails中的会话管理允许在多个请求之间保持状态,这对于购物车尤为重要,因为用户可能需要在不同时间查看或修改购物车。 6. **数据库迁移(Database Migrations)**:Rails提供了方便的工具...
资源名称:Web开发敏捷之道 应用Rails进行敏捷Web开发(第3版)内容简介:全书主要分为两大部分。在“构建应用程序”部分中,读者将看到一个完整的“在线购书网站”示例。在随后的“Rails框架”部分中,作者深入介绍...
标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...
基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip ...
在《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》中,你将可以…… ·跟随一个完整的教程,亲手编写一个基于web的在线商店; ·了解Rails如何消除烦人的配置与琐事; ·学会如何开发国际化的应用程序; ·...
在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...
在开发环境中,教程推荐使用集成开发环境 (IDE) Eclipse,搭配 Aptana 插件来支持 Ruby on Rails 和 iPhone 开发。Aptana 提供了对 Ruby 和 Rails 的语法高亮、快捷键以及执行环境的支持。iPhone 插件则提供了预览 ...
在“ruby on rails社区网站开发源码”中,我们可以学习到如何利用Rails构建一个互动性强、功能丰富的社区网站。以下是一些关键知识点: 1. **安装与环境设置**:首先,你需要安装Ruby和Rails。这通常涉及设置Ruby...
在Rails的开发文档中,你可以找到以下关键知识点: 1. **Ruby基础**:首先,你需要对Ruby语言有一定的理解,包括其语法、数据类型、控制结构、方法等。Rails是建立在Ruby之上的,因此深入理解Ruby是学习Rails的基础...