Rails与web安全[Web安全大家谈] - 编程入门网
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |