Rails安全导读【三】

四 重定向和文件

另一类安全问题是围饶在web应用里重定向和文件的使用。

4.1 重定向

web应用里的重定向是一个被低估的craker工具:它不仅可以让用户掉入一个陷进网站,而且还可以创造一个完备的攻击。

当用户被允许由一个URL重定向的时候,它由可能就是个漏洞。最明显的攻击是将用户重定向到一个和原始页面一模一样的假页面。这个所 谓的‘钓鱼攻击’通过给用户发送一封包含正常的不让人起疑的链接的email, 通过XSS方式往web应用里注射这个恶意链接或者把链接放到一 个虚假的网站(域名看起来差不多,页面也相同的站点)。它是毫不让人怀疑的,因为这个链接的起始URL是这个正常的web应用,指向恶意站 点的URL都被隐藏在重定向参数里:http://www.example.com/site/redirect?to= www.attacker.com. 这里由个例子:

def legacy
   redirect_to(params.update(:action=>'main'))
end

如果用户访问legacy这个action,将会被重定向到mail action。这样做的意图是为了维护legacy的参数,并把这些参数传到main action。 但是,如果它包含了一个host key,就会被攻击者利用。

http://www.example.com/site/legacy?param1=xy&param2=23&host=www.attacker.com

如果它在url的尾部, 将很难被注意到,用户就被神不知鬼不觉的重定向到了攻击者的页面。一个简单的对策是,在legacy action里只包 含预期的参数(白名单的办法,不是取消所有意向不到的参数)。如果你重定向到一个网址,你需要用白名单或是正则表达式检查它。

4.1.1  Self-contained XSS(自载的xss攻击)

另一个重定向和self-contained XSS 攻击是通过firefox和opera里使用的一种数据协议。该协议直接在浏览器里显示其内容,可以使任何 内容,从html,javascript到图片。(这不是一个漏洞,而是一个功能)

data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K

这个例子是一个Base64编码的显示简单消息框的javascript。在一个重定向的URL里,一个攻击者能用它里面的恶意代码重定向这个url。

更详细的攻击原理可以参看这里:http://www.gnucitizen.org/blog/self-contained-xss-attacks/

对策:do not allow the user to supply (parts of) the URL to be redirected to.(说实话,这里我没看明白)

4.2 文件上传

- 确保文件上次不覆盖重要的文件,和同步的媒体文件进程。

很多web应用允许用户上传文件,用户可以选择的文件名字,应该随时被过滤,因为攻击者可以用恶意的文件名覆盖服务器上任意文件。如 果你在/var/www/uploads存储上传文件,用户输入一个文件名:../../../etc/passwd, 它可能覆盖一个重要文件。

当过滤用户输入的文件名时,不要试图去删除恶意的部分。想一想,如果去掉所有的../ , 攻击者输入.. .. //, 那么结果就成了../。最 好是用白名单的方式,用一套可接受的字符去检查文件名的有效性。一旦它不是一个有效的文件名,则拒绝它(或替换它),但是不删除它们 。这有一份来自attachment_fu插件的文件名清单:

def sanitize_filename(filename)    returning filename.strip do |name|        # NOTE: File.basename doesn't work 

right with Windows paths on Unix        # get only the filename, not the whole path        name.gsub! /^.*(\\|\/)/, 

''        # Finally, replace all non alphanumeric, underscore        # or periods with underscore        

name.gsub! /[^\w\.\-]/, '_'    endend

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 文件名
, 用户
, web重定向
, 攻击
, 一个
, 恶意
, rails上传图片
取消重定向
rails线程安全、rails 三目运算、三国演义导读、三国演义名著导读、三国演义导读ppt,以便于您获取更多的相关知识。

时间: 2024-08-03 17:49:45

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

建立一个典型的Ruby On Rails网站(三)

第三部分,权限设计和acl插件的使用.感觉这样的权限设计也是很主流的. 下面,再看看EOL.ORG在权限设计方面是如何实现的,或者使用了什么插件. 用户角色设计和权限管理 EOL.org的权限部分采用acl_system plugin的插件,地址如下 http://brainspl.at/articles/2006/02/20/new-plugin-acl_system 机制如下: 用户可以分配零个或多个角色 一个或多个Controller可以隶属于一个角色 那么,保证权限正确限制,可以从以下几

Ruby on Rails真实案例三则

要证明Rails的伸缩性,最好的办法莫过于考察一个确实有效伸缩的应用程序.在这里我们将考察三个真实应用遇到的性能问题,以及它们如何解决这些问题. 37signals开发的Basecamp Rails就诞生于Basecamp项目.这是一个基于web的项目管理工具,它的用户需要每月付款.Basecamp服务器为成千上万的用户提供项目管理所需的功能服务. 在为Basecamp进行性能优化时,最大的难题在于很难使用缓存:每个人都来自不同的公司.有着不同的权限,因此看到的数据也各有不同.(不过从好的方面来

Rails测试《三》功能测试functional test

功能测试functional test 在rails中,针对单个controller中的各个action进行的测试,叫做功能测试.controller处理web的请求,将请求的响应render到view中. 功能测试包括的内容 web请求是否成功? 用户是否被引导进入正确的页面? 用户是否成功的验证? 响应的模板中是否包含了正确的内容? 在给用户的view中是否显示了适当的内容? 功能测试分解 在使用rails g scaffold post或者rails g controller命令之后,会创

Rails安全导读【二】

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

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安全导读【一】

原文地址:http://guides.rubyonrails.org/security.html 这个指南描述的是在web应用里普遍的安全问题,同时也给出了在Rails里如何避免这些问题.如果你有任何问题,请mail作者,Heiko Webers, at 42 {et} rorsecurity.info. 读完此文后,你应该会了解: 1.所有的对策已经被高亮显示了 2.在Rails里session的概念, 该放什么在session里,以及一些流行的攻击方法 3.只是浏览一个站点,怎么就有安全问题

如何将javascript中的变量值传递到rails代码中以便于使用?

问题描述 function generatePara(){ var a=10}如何将javascript中的变量值传递到rails代码中以便于使用?怎么把a的值传到Controller??class LookController < ApplicationController def form @user = params[:a] endend请大家指教,谢啦!问题补充:我想用 prototypeHelper 里面的方法来解决在解决这个问题,有是办法马?<%= link_to_remote:u