快速业务通道

Rails安全导读【五】 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
11-07-18 51cto博客 blackanger译

7.5. 良好的密码

— 你发现去记住你所有的密码是很难的了吗 ?不要把它们都写下来,可以用一句容易去记住的句子里每个单词的首字母的组合。

一个叫Bruce Schneier的安全技术员,他分析了34,000个真实世界来自于MySpace钓鱼攻击的用户名和密码。这证明了大多数的密码是很容 易被破解的。20个最常用的密码是:

password1, abc123, myspace1, password, blink182, qwerty1, **you, 123abc, baseball1, football1, 123456, soccer, monkey1, liverpool1, princess1, jordan23, slipknot1, superman1, iloveyou1 and monkey.

有趣的是,这些密码里仅有4%是字典里的单词,并且绝大多数实际上是字母。然而,黑客字典包含了大量的今天的密码,并且它们尝试了各 种(字母数字混合)组合。如果你个攻击者知道你的用户名,并且你使用了弱密码,那么你的帐户会很容易就被破解。

一个好的密码是一个长的字母混合体。由于这种密码很难去记忆,所以最好是只输入一个你很容易记住的句子里每个单词的第一个字母。例 如,"The quick brown fox jumps over the lazy dog" will be "Tqbfjotld".注意,这只是一个例子,你不应该使用众所周知的短语组成这 样的密码,因为它也有可能出现在黑客字典里。

7.6. 正则表达式

— 在Ruby的正则表达式里有个共同的缺陷是匹配字符串的开始和结束的^和$,而不是\A和\z.

Ruby用一种和其他语言略有不同的做法去匹配字符串的开始和结束。这就是为什么很多Ruby和Rails的书都犯这样的错。那么这个安全威胁 是怎么样的呢? 假设你有一个文件model并且你像这样来验证这个文件名 :

class File < ActiveRecord::Base   validates_format_of :name, :with => /^[\w\.\-\+]+$/ end

这个意思是说,在保存之前,这个model会验证仅由字母数字字符,点,+和-的组合的文件名。程序里增加里^和$以便文件名这个字符串 从开始到结束都包含这些字符。然而,在Ruby里,^和$匹配的是行开始和行结束。因此这样的一个文件名可以毫无问题的通过这个过滤器 :

file.txt%0A<script>alert(''hello'')</script>

由于%0A在URL编码里是一个换行符,所以Rails会自动将其转为"file.txt\n<script>alert(hello)</script>". 这个文件名 能通过这个过滤器因为这个正则表达式能一直匹配到行尾,其余的都不重要。正确的表达式应该这样:

/\A[\w\.\-\+]+\z/ [source, ruby]

7.7. 权限提升

— 改变一个单一的参数可能给用户未授权的访问。请记住,每个参数都可能被改变,不管你对它做了多少隐藏和混淆。

最常见的使用者可能篡改的是id参数。比如在http://www.domain.com/project/1, 因为1是id.它会给controller里的params[:id]一个可用 的值. 在这里,你可能做这样的事情:

@project = Project.find(params[:id])

这对于某些web应用是没有关系的,但是如果用户没有权限去看所有的projects就不行了。如果用户把id修改成了43,并且他不被允许看到 那个信息,他会想尽办法来访问它。相反,查询用户的访问权限:

@project = @current_user.projects.find(params[:id])

根据你的web应用,可能会有更多的参数用户可以篡改。经验告诉我们,在未证明之前,没有一条用户输入的数据是安全的,并且来自于用 户的每个参数都有可能被操纵。

不要被安全,困惑和javascript安全愚弄了。Mozilla Firefox的web开发工具栏让你可以审查和修改每个form表单的隐藏字段。JavaScript 能被用来验证用户的输入数据,但是也肯定不能防止攻击者发送带有意想不到数据的恶意请求。Mozilla Firefox的Live HTTP Headers插件记 录每个请求,并可以重复和改变它们。这

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号