`
sunfengcheng
  • 浏览: 184342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rails 防止SQL注入式攻击

阅读更多
[size=x-large][color=green] 防止SQL注入式攻击

  SQL 代码注入攻击是最常见的一种攻击WEB应用程序的方法。 这种攻击的结果是让你的数据库被破坏或者完全暴露。最好的防范SQL代码注入的方式是过滤掉所有输入的信息。 并且对最后的结果进行转义输出。
 
  解决方法:
   使用Active Record 提供的变量绑定功能对查询语句进行“消毒”,这些邦定的变量会成为你的SQL 语句的一部分。 考虑下面的方法, 他以 id 作为参数查询你的 记录。
def get_user
  @user = User.find(:first, :conditions => "id = #{params[:id]}")
end


如果想你期望的那样, params[:id] 包含了一个整型参数,那么这个语句就会如期执行。但是,如果一个用户传进的语句像 “1 or 1=1”会怎么样? 他会插入到生成的SQL语句中:
  
SELECT * FROM users WHERE (id = 1 OR 1=1)
这些语句SQL 将返回所用用户,因为 Boolean OR 个条件 1=1 永远是true , 对find 的调用将之返回一个用户, 但这里不能担保 id 为1 的用户一定被返回,返回结果依赖于数据库内部是如何来排序记录的。

下面get_user 的另一种实现方式, 利用一种绑定的参数来防止 SQL语义篡改。
def get_user
  @user = User.find(:all, :conditions => [ "id = ?", params[:id] ])
end
现在讲“1 OR 1=1 ”传入 find 的方法会产生如下 的SQl :
 SELECT * FROM users WHERE (id = '1 OR 1=1')
在这种情况下, id 将和整个字符串比较,数据库将试图把它转换为一个数字,这里转换的结果就是 1 , 只是把id 为1  的用户信息输出而已。[/color][/size]
6
6
分享到:
评论
1 楼 tcwt008 2008-08-26  
恩这是常见的 !网络安全问题!开发web必须注意的!

相关推荐

    rails2-sample

    这一章节将讨论Rails中的安全特性,如防止SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。通过实施这些防护措施,可以大大降低应用遭受攻击的风险。 #### 9. Advanced Topics(高级主题) 这一部分将覆盖...

    Enterprise Rails

    3. **安全性和合规性**:企业级应用必须确保数据的安全,防止SQL注入、XSS攻击等。书中可能会涵盖认证、授权框架(如Devise和CanCanCan),以及SSL/TLS加密、CSRF防护等最佳实践。 4. **测试与持续集成**:企业级...

    Ruby on Rails 入门经典教程

    教程将讲解如何使用Rails的安全特性,如防止跨站脚本攻击(XSS)和SQL注入,以及如何优化数据库查询和缓存策略来提升应用性能。 最后,教程还会涉及Rails社区常用的开发工具和最佳实践,如版本控制系统Git,开发...

    基于Ruby On Rails的洗衣系统

    - **安全**:防止SQL注入、XSS攻击,使用Rails的安全特性如Strong Parameters、CSRF保护等。 - **部署**:将应用部署到服务器,如Heroku或AWS,使用Capistrano自动化部署。 - **性能优化**:考虑缓存策略,如Rails...

    SitePoint[1].Simply.Rails.2.2nd.Edition.May.2008.pdf

    8. **安全措施**:讨论Rails中的安全问题,包括防止SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF),以及如何实现用户认证和授权。 9. **高级主题**:涵盖性能优化、缓存策略、多数据库支持等高级话题,帮助...

    Simply Rails 2 2nd Edition (2008)

    - **主要内容**:讨论Rails应用的安全性问题,涵盖身份验证、授权机制、防止SQL注入攻击等方面的知识。 - **学习目标**:具备基本的安全意识,能够在开发过程中实施有效的安全防护措施。 ##### 第9章:高级主题 - ...

    使用 rails进行敏捷开发(第三版)

    13. **安全与最佳实践**:涵盖CSRF防护、XSS防范、SQL注入预防,以及Rails的安全最佳实践。 14. **Rails社区和生态系统**:介绍Rails的活跃社区,以及相关的插件、gem(宝石)和工具。 通过阅读这本书,开发者不仅...

    Ruby On Rails-Cheatsheet

    - 使用 `h()` 方法转义 HTML 特殊字符,防止 SQL 注入等安全问题。 #### 链接创建 - **基本链接** - `, :action => "action_name" %>`. - **带 ID 的链接** - `, :action => "action_name", :id => product %>`...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    27.1 SQL注入 479 27.2 用参数直接创建记录 481 27.3 不要相信ID参数 482 27.4 不要暴露控制器方法 483 27.5 跨站脚本(CSS/XSS) 483 27.6 防御session定置攻击 485 27.7 文件上传 486 27.8 不要以明文保存敏感信息...

    rails-tutorial-6

    10. **安全和认证**:学习防止SQL注入、XSS攻击等安全措施,以及如何实现用户认证和授权,例如使用devise gem。 11. **Ajax和前端技术**:Rails 6引入了Webpacker,便于整合JavaScript库和实现Ajax交互,同时理解...

    网站安全 不容忽视的企业外部威胁 - ruby.zip

    对于Ruby on Rails应用,开发者需要确保遵循最佳实践,如使用参数化查询来防止SQL注入。 数据库安全是另一个关键领域。企业通常存储大量敏感信息,如客户数据、交易记录等。保护数据库免受未经授权的访问、修改或...

    easybuy.zip

    这包括防止SQL注入、XSS攻击,以及使用HTTPS协议加密通信,确保数据安全。 5. **用户体验设计**:易用性和吸引力对于电商平台的成功至关重要。这涉及布局设计、导航结构、响应式设计(适应不同设备)以及购物车和...

    挑战挑战

    10. **安全**:了解常见的Web安全问题,如XSS(跨站脚本攻击)、CSRF(跨站请求伪造)和SQL注入,并学习如何通过Rails的安全特性来防范。 通过解决这些挑战,你不仅将深化对Ruby on Rails的理解,还将增强实际开发...

    网上购物小网站 网页访问人数

    对用户输入进行验证,防止SQL注入和XSS攻击。 5. **购物车功能**:允许用户临时存储想要购买的商品,通常涉及到会话管理,将商品添加到用户的临时购物车,并在用户结账时进行结算。 6. **支付集成**:为了处理在线...

    潇湘在线公开日记 V1.0(清爽绿色版)

    5. **安全性**:考虑到日记的私密性,系统需要对用户输入进行安全过滤,防止SQL注入等攻击,并且在传输过程中使用HTTPS协议加密,确保数据的安全传输。 6. **用户体验**:通过良好的UI/UX设计,使得用户能够方便地...

    用户注册页面

    - **防止SQL注入**:使用参数化查询或预编译语句,防止恶意SQL代码执行。 - **XSS防护**:对用户输入进行编码,防止跨站脚本攻击。 - **CSRF令牌**:防止跨站请求伪造,确保请求来自合法用户。 6. **错误处理**...

    web开发框架比较.pdf

    Django的安全性尤其突出,对于防止SQL注入、跨站脚本攻击等有很好的防护。 Ruby on Rails则是Ruby语言的首选框架,它提倡“约定优于配置”的开发模式,大大提高了开发效率。Rails的ActiveRecord ORM与数据库交互...

    Web 应用开发原理与技术.rar

    此外,安全性是Web应用开发不容忽视的一环,包括防止SQL注入、XSS攻击(跨站脚本攻击)和CSRF(跨站请求伪造)等。开发者还需要了解如何使用SSL/TLS证书实现数据传输加密,保护用户隐私。 总的来说,Web应用开发是...

    Web程序设计09 Web程序设计09 Web程序设计09 Web程序设计09

    9. **安全性**:包括防止SQL注入、XSS攻击、CSRF攻击等,以及HTTPS协议确保数据传输的安全。 10. **响应式设计**:使网站能够根据访问设备的屏幕大小自动调整布局。 "Web程序设计09.csf"可能是一个课程文件,其中...

Global site tag (gtag.js) - Google Analytics