快速业务通道

Rails与web安全[Web安全大家谈] - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Rails与web安全[web安全大家谈]

时间:2011-11-09 51cto博客 blackanger

据说现在一台pc(Windows系统)上网的时候,如果没有任何杀毒软件防火墙,那么十分钟之内就会被 沦陷为病毒之城。为什么会如此呢?因为你上网的时候,可能有的网站会被植入病毒,植入木马什么的, 网站的用户只要一登陆,如果没有任何防护措施,那么你的机器肯定会马上被攻陷了。当然了,网站也不 是故意要挂病毒和木马给用户的,主要是有些站点在开发之初或上线之后都没有考虑过web安全的问题, 以致于存在很多安全隐患,导致被恶意的Hacker所控制,从而发生上述一幕。那么该如何防范呢?

广告之后更精彩:

趋势科技, 让Hacker病毒们,去死!

第一,对于普通用户来说,可以下载一些著名的安全软件来使用,比如趋势科技的WTP, 网站管理员 也可以使用趋势的防毒墙。但是我觉得,要解决根本,还是从站点开发之初来防范这些漏洞。 当然,漏 洞也是变化的,上线以后还是部署个趋势的防毒墙更保险。

=。=

身为一名Rails开发者,就说一下web安全十大漏洞和rails开发中该如何防范这些漏洞。

A1 - Cross Site Scripting (XSS)

这是攻击者利用在网站里嵌入javascript来进行获取受害人的cookie信息。

Rails2.0对XSS攻击的防范也得到增强,TextHelper#sanitize由黑名单改为了白名单实现。具体攻击 方法在这里:http://www.rorsecurity.info/2007/05/01/cross- site-scripting-user-agent- injection-attack-methods/

有助于我们检测自己的项目。

rails策略:

1.在view里加入h方法,safeERB插件的作用ms不是为了帮助我们免除这一步。

2.用whitelist,刚才所说的rails2。0开启了这个方法TextHelper#sanitize.

3.在使用BlueCloth和RedCloth的时候,应该联合WhiteList来用,避免引发安全问题。

4。在Rails1.2.3版本之前,不要使用to_json方法,小心殆害!

A2 - Injection Flaws

Rails与web安全[Web安全大家谈](2)

时间:2011-11-09 51cto博客 blackanger

注入攻击有很多种,SQL,LDAP,XPath,XSTL,HTML,XML,OS COMMAND等等,但主要是SQL注入比较 突出,我们这里只关注SQL注入的解决方法。

Don''t use Project.find(:all, :conditions => "name = ''#{params[:name]}''")

Do use Project.find(:all, :conditions => ["name = ?", params[:name]])

sql注入是指攻击者从客户端手动输入参数,使参数传到数据库服务器,混入到sql查询语句里把一些 信息返回到客户端,即浏览器显示。

Project.find(:all, :conditions => "name = ''" + params[:name] + "''")

Project.find(:all, :conditions => "name = ''#{params[:name]}''")

比如这两个例子,将会受到sql注入的攻击:

攻击者只要输入:'' or 1 -, 这个时候rails生成的sql语句就变成了:

select * from projects where name = '''' or 1 --''

因为在mysql里的boolean值是1,这个 – 符号(# 和 /*也是注释)是sql的注释,后面所有的一切都 会被忽略,所以我们这个sql句相当于

select * from projects

利用sql 注入如何绕过权限验证:

  User.find(:first, "login = ''#{params[:name]}'' AND password = ''#{params

[:password]}''")
   params[:name] = '' OR ''1''=''1
   params[:password] = '' OR ''2''>''1
   params[:name] = '' OR login LIKE ''%a%
   params[:password] = '' OR ISNULL(1/0) #
  Unauthorized Reading

参见:http://www.rorsecurity.info/2007/05/19/sql-injection/

rails的解决办法就是:

1。用占位符号

User.find(:first, :conditions => ["logi

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