Rails安全导读【一】

原文地址:http://guides.rubyonrails.org/security.html

这个指南描述的是在web应用里普遍的安全问题,同时也给出了在Rails里如何避免这些问题。如果你有任何问题,请mail作者,Heiko Webers, at 42 {et} rorsecurity.info.  读完此文后,你应该会了解:

1.所有的对策已经被高亮显示了

2.在Rails里session的概念, 该放什么在session里,以及一些流行的攻击方法

3.只是浏览一个站点,怎么就有安全问题呢?(with CSRF)

4.当你使用files或提供一个管理界面的时候需要注意些什么

5.The Rails-specific mass assignment problem

6.如何管理用户:登陆,注销以及对所有层面的攻击方法。

7.以及最流行的注入攻击方法。

一 介绍

web application框架帮助开发者建立种种web应用,某些框架在安全方面也帮你省心不少。事实上,一个框架并不比另一个安全。对于大多 数的框架来说,如果你正确使用它,可以建立安全的应用。Ruby on Rails有许多聪明的helper方法,例如防止注入攻击的方法,这让sql注入 变成了困难的事情。很高兴看到我审定的所有rails app都有一个良好的安全级别。

一般没有这种即插即用的安全,安全依赖于正在使用的框架,有时候也依赖于开发方式。它取决于web应用的所有环境:后端存储,网络服 务器和网络应用程序本身(以及可能的其他层或应用程序) 。

Gartner组织估计大约75%的攻击都是在web应用,并且在300个调查的web应用里,97%都是容易被攻击的。这是因为web应用容易攻击,因为 它们易于理解和操作,甚至是懒人。

在受到威胁的web应用中,包括用户帐户劫持,绕开访问控制,阅读或修改敏感数据,或出示虚假的内容。或攻击者可以安装一个特洛伊木 马程序或不请自来的电子邮件发送软件,目的是在金融活动或造成损害品牌名称,修改公司的资源。为了防止攻击,最大限度地减少其影响和 消除攻击点,首先,你必须充分了解攻击方法,以便找到正确的对策。这正是该指南的目的。

为了开发安全的Web应用你必须不断更新的所有层次和了解你的敌人。要不断更新订阅的安全邮件列表,请阅读安全博客,并更新和安全检 查的习惯。我手工做这些,因为这你才能找到讨厌的合乎逻辑的安全问题。

二 Sessions

我们的安全之旅最好是从最易受到特别攻击的sessions开始。

2.1  什么是sessions

— HTTP is a stateless protocol Sessions make it stateful.

- HTTP是一个无状态协议,Sessions使它有状态。

大多数的应用需要对一个特别用户的某些状态进行跟踪。比如,一个购物车的内容,一的当前登陆用户的id,如果没有sessions这个好主意 ,用户必须在每一个请求都得去标识验证身份。如果一个新用户访问这个应用,Rails会自动创建一个新的session。如果用户之前使用过这个 应用,它会自动加载一个存在的session。

一个session通常是一个hash和一个session id(通常是一个32个字符的字符串)来标识这个hash。Rails里你可以用如下方式保存和使用 session:

session[:user_id] = @current_user.id
User.find(session[:user_id])

2.2 session id

— The session id is a 32 byte long MD5 hash value.

- session id就是个一32位的md5 hash值。

一个session id由一个随机字符串的hash值组成。这个随机字符串是当前的时间,一个0和1之间的随机数字,一个ruby解释器进程id数字和 一个常量字符串组成。

时间: 2024-09-17 04:24:34

Rails安全导读【一】的相关文章

Rails安全导读【三】

四 重定向和文件 另一类安全问题是围饶在web应用里重定向和文件的使用. 4.1 重定向 web应用里的重定向是一个被低估的craker工具:它不仅可以让用户掉入一个陷进网站,而且还可以创造一个完备的攻击. 当用户被允许由一个URL重定向的时候,它由可能就是个漏洞.最明显的攻击是将用户重定向到一个和原始页面一模一样的假页面.这个所 谓的'钓鱼攻击'通过给用户发送一封包含正常的不让人起疑的链接的email, 通过XSS方式往web应用里注射这个恶意链接或者把链接放到一 个虚假的网站(域名看起来差不

Rails安全导读【完】

8.注入 - 注入这类攻击是给一个web应用引入恶意的代码或是参数,以便在其安全的上下文里运行.注入的著名的例子就是跨 站点脚本(XSS)和SQL注入. 注入是非常棘手的,因为相同的代码或参数在一个环境是恶意的,但是换个环境却是完全无害的.一个上 下文可以是一个脚本,查询或是程序语言,shell或是Ruby/Rails方法. 下面的章节会涵盖所有重要的注入攻击可能发生的所有上下文.然而 第一部分只涉及一个与注入相关的架构决策. 8.1. 白名单 vs 黑名单 - 当净化(sanitizing),

Rails安全导读【五】

7. 用户管理 - 几乎每个web应用都必须去处理授权和认证.避免你自己重复造轮子,建议你去使用通用的插件.但是请保持它们是最新的.一些额外的 预防措施可以让你的应用更加安全. 有一些Rails可用的授权和认证插件.密码加密以后保存好于直接保存纯文本密码.最流行的插件是可以避免session定制的 restful_authentication. 然而早期的版本在某些情况下你即使没有用户名和密码也可以登陆. 每个新用户可以通过一个带激活码链接的电子邮件来激活他的帐户.帐户激活之后,数据库里激活码那

Rails安全导读【四】

5. 企业内联专用网和管理安全 - 企业内联网和管理界面是最流行的攻击目标, 因为它们有特殊的访问权限. 虽然它会有一些额外的安全措施,可是现实里并非如此. 2007年,在线招聘站点Monster.com遭受了一起定制木马(Tailor-made Trojans)攻击,这是第一只专门从企业内联网偷窃信息的定制木马 .定制木马是非常罕见的,迄今为止,发生率比较低, 但是它也确实是可能发生的,这也是一个客户端主机安全何等重要的例子. 然而,企业 内联网和管理应用程序面对的最大威胁还是XSS和CSRF

Rails安全导读【二】

可以接着上一章来看: 三 Cross-Site Reference Forgery (CSRF) - 这个攻击方法包含恶意代码或是一个用户信任的已验证的web应用页面的链接.如果session没有过期,攻击者就可能执行未授权的命令 . 在session那一章里,你已经了解,大多数的Rails应用都使用基于cookie的session.要么他们在cookie里存储一个session id,服务端有 个session hash,要么整个session hash都在客户端.当向一个域名发送请求时,如果

通过Ruby on Rails和docker构建微服务架构之入门教程

说到时下的架构,免不了会涉及到微服务.而谈到微服务架构,又跟容器和Docker技术脱不了关系.虽然容器和Docker并不完全是一回事,但两者是密不可分的,而且二者之间也有共同之处:在大型复杂应用的构建和运营方面,二者都可以大大提高企业的效率.   微服务可不像一般的应用,可以通过apt-get工具进行安装,大家可能会问了:我们该如何才能像安装应用一样实现这种服务呢?在很大的程度上,这个问题的答案是否定的,我们无法轻松实现这种服务.更准确的说,至少目前我们还无法实现.在一个系统中,最难修改的就是架

rails中validates_confirmation_of验证方法无效的解决办法

    rails的model中提供了很多种自带的验证方法,validates_confirmation_of可以验证变量xxx和xxx_confirmation是否相等:这可以用于验证2遍输入的密码是否一致的情况.但是实际使用中发现上述验证方法貌似没有进行验证:在确认了变量:password和:password_confirmation名称确实没错的情况下,研究了半天,发现还要做一步操作,就是要在controller的user_params的许可中加入:password_confirmatio

Rails系统中的AJAX开发技术简析(2)

ajax|rails 五. 使用link_to_remote Rails有若干帮助者方法以在你的视图的模板中实现Ajax.一种最简单且很通用的方法就是link_to_remote().让我们考察一个简单的web页面-它实现询问时间并且有一个链接,用户可以点击这个链接来获得当前的时间.该应用程序经由link_to_remote()使用Ajax以检索时间并且显示它于web页面. 我的视图模板(index.rhtml)看起来象: <html><head><title>Ajax

Rails系统中的AJAX开发技术简析

ajax|rails 一. Ajax的简短历史 在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西.本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现. 本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识. 最开始出现的是万维网.比较于桌面应用程序,web应用程序相当缓慢和沉闷.无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏