快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
来读取数据库里的任意数据,让我们拿上面的例子来看 :

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

现在让我们使用UNION来注入另一个查 询:

'') UNION SELECT id,login AS name,password AS description,1,1,1 FROM users --

它最后是这样的 SQL查询结果:

SELECT * FROM projects WHERE (name = '''') UNION  SELECT id,login AS name,password AS description,1,1,1 FROM users --'')

这个结果不会是项目的列表(因为给的name是空的),而是返回用户名和他们密码的 列表。所以希望你在数据库里对密码加密!对攻击者来说,唯一的问题是这两则查询语句的列数必须相同。这就是为什么第二个查询包含了一 组(1),它们的值一直为1,是为了匹配第一组查询的列数。(译者注:projects表为6列,那么后面的也是6列,所以要加三个1)

此外 ,第二个查询语句用as重新命名了一些列的名字是为了使web应用显示这些user表里的值。一定要更新你的Rails到最新的2.1.1。

8.2.4.对策

Ruby on Rails有一个专门过滤SQL字符的内置过滤器, 它会过滤 '' , Null字符和破折号。使用 Model.find (id) 或 Model.find_by_some_thing(something)会自动的应用这个对策[,#fffcdb]. 但是在SQL片段,尤其在条件片段(:conditions ⇒ "…"), connection.execute() 或 Model.find_by_sql() 方法里, 必须通过手工操作。

不要给条件参数里传一个字符串,你可以像这样传一个数组来净化威胁:

Model.find(:first, :conditions => ["login = ? AND password = ?", entered_user_name, entered_password])

如你所见, 这个数组的第一部分是以问号标记的sql片段,第二部分中的变量来取代问号。或者你可以传一个hash也是一样的效果:

Model.find(:first, :conditions => {:login => entered_user_name, :password => entered_password})

数组和hash只适用于model实例.在其他地方你可以尝试sanitize_sql(). 当在SQL里适用以个外部字符串时候,要习惯性的思考其安全方面 的后果。

8.3. 跨站脚本 (XSS)

— web应用最广泛的最严重的安全漏洞就是XSS. 它是注入客户端可执行代码的恶意攻击。Rails提供了很多helper方法来抵御这类攻 击.

Rails安全导读【完】(3)

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

8.3.1.切入点

一个切入点是指攻击者可以开始攻击的有缺陷的URL及其参数。

最常见的切入点是消息贴,用户评论和留言本,但是项目的名称,文件名称和搜索结果页也是脆弱的 - 只要是用户可以输入数据的任何地 方。但是输入并不一定必须来自网站的输入框,它可以是任何的URL参数 - 可见的,隐藏的或内部的。 请记住,用户可以截断任何通信,像 使用 Live HTTP Headers Firefox plugin或client-site proxies 可以很容易的改变请求。

XSS 攻击原理是这样的: 一个攻击者注入了一段代码,web应用保存并把它显示在了页面上,之后就呈现给了受害者。最简单的XSS例子是显 示一个警告框,但是它的能力不仅仅是这样的。XSS可以窃取cookie,劫持session;让受害者重定向到一个虚假网站,显示有利于攻击者的广 告,改变站点内如以获取机密信息或通过浏览器的安全漏洞安装恶意软件。

在2007年的下半年,mozilla浏览器有88个漏洞报告,Safari有22个,IE有18个,Opera有12个。 赛门铁克全球网络安全威胁报告也记载了 239个浏览器插件的漏洞。Mpack 是一个非常积极的利用这些漏洞的最新攻击框架。web应用框架的SQL注射漏洞和在每一个文本表列里插入恶意 代码对罪恶的黑客是很有吸引力的。 在2008年4月,有超过510,000家网站就这样被黑的,其中包括英国政府,联合国和很多更高级的目标。

一个

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