***还有可能在浏览器中加载JavaScript,以便迫使浏览器发出跨域的调用并打开安全漏洞。数据序列化——浏览器可以调用Ajax来实施数据序列化。未经认证的内容或者使用不安全的调用,轻则导致会话内容泄露,重则迫使浏

JavaScript包含的Ajax是Web2.0应用的一个重要组成部分。该部分的进化发展使网络变 成了超级平台。该转变同时也催生了新品种的病毒和蠕虫,比如Yamanner,Samy 以及Spaceflash等等。Google,Netflix,Yahoo 以及MySpace等门户网站在过去的几个月里都因为新的漏洞而蒙受一定损失。***们可以利用这些漏洞进行钓鱼,跨站点脚本(XSS)以及跨站点伪造 (XSRF)请求等***。
Ajax中没有固有的安全漏洞,但是对该技术向 量的适配显著地改变了网络应用的开发途径以及方法论。以前,DCOM和CORBA组成核心中间件层的时候,将数据和对象序列化非常困难。Ajax使用简单 的GET,POST或者SOAP调用,来转换XML,HTML,JS Array,JSON,JS Objects以及其他定制的对象;全部这些操作都不需要调用中间件层。Ajax的这种综合能力使应用服务器与浏览器之间的数据交换非常流畅。从服务器端 传来的信息动态地被注入到当前的DOM相关环境,然后浏览器的DOM状态重置。在讲安全漏洞之前,我们先来看看促成Web2.0漏洞的关键因素。
多重分散的终端点以及隐藏调用——Web2.0应用与Web1.0的主要区别就是信息访问机制的区别。比起 它的前身Web1.0, Web2.0应用有数个Ajax终点。潜在的Ajax调用分散于整个浏览器页面,并且能够被各个事件分别调用。开发者恨难应付Ajax调用的这种分散性, 并且由于这些调用是隐藏的,不那么明显,它还可能导致代码不规范。
认证混乱——输入和输出内容认证是应用的重要因素之一。Web2.0应用使用桥,mashups,还有反馈等等。很多情况下,它假定“另一方”(读取服务器端或者客户端代码)已经实现了认证,这种混乱就导致了双方都没有实现适当的认证控制。
不受信任的信息来源——Web2.0应用从很多不受信任的来源比如反馈,博客,搜索结果中获得信息。这些内 容在提供给终端浏览器之前从来没有被认证,这就有可能引发跨站点***。***还有可能在浏览器中加载JavaScript,以便迫使浏览器发出跨域的调用并 打开安全漏洞。那样的话,这些致命的漏洞就能被病毒和蠕虫利用。
数据序列化——浏览器可以调用Ajax来实施数据序列化。它可以获取JS array,Objects,Feeds,XML文件,HTML 块以及JSON。如果这些序列块中的某一个被解析并修改了,***们就可以强迫浏览器执行恶意脚本。不受信任信息与数据序列化的结合,对终端用户的安全是致 命的。
动态脚本构成和执行——Ajax会建立一个后端通道,从服务器获取数据,然后将它传送给DOM。实现这一点的必要条件就是动态地执行JavaScripts,以便随时更新DOM或者浏览器页面缓存的状态。Ajax通过调用定制的功能或者eval()功能。未经认证的内容或者使用不安全的调用,轻则导致会话内容泄露,重则迫使浏览器执行恶意内容等各种后果。
Web2.0应用可能因为上面提到的1个或多个失误而变得易受***。如果开发者不够审慎,没有花心思在安全管理上的话,那么服务器和浏览器端都会出现安全问题。以下是10个可能的安全漏洞的简要说明。
(1)畸形的JS对象序列
JavaScript支持面向对象编程(OOP)技术。它有很多不同的内置对象,也允许用户自己创建对象。使用者可以用new object() 或者自己编辑如下代码来创建新的对象。
message = {
from : "[email]john@example.com[/email]",
to : "[email]jerry@victim.com[/email]",
subject : "I am fine",
body : "Long message here",
showsubject : function(){document.write(this.subject)}
};

这是一个简单的消息对象,其中有2个字段需要电子邮件地址。我们可以使用Ajax来将该对象序列化并用JavaScript代码编译。程序 员可以将它赋值到变量或者eval()。如果***者发送嵌入了脚本的恶意“主题”,那么读者就将成为跨站点脚本***的受害者。JS对象既包含数据也包含方 法。对JS对象序列的不当使用将产生可以被诡计多端的注入代码利用的安全漏洞。
(2)JSON对注入
JavaScript对象符号(JSON)是一个简单而有效的少量数据交换格式,它包含对象,数组,Hash表,向量以及列表数据结构。 JavaScript, Python, C, C++, C# 和Perl languages都支持JSON。JSON序列在Web2.0应用中是个非常有效的交换机制。开发者频繁使用Ajax和JSON,获取并传送必要的信息 给DOM。下面是个简单的带有不同的name值对的JSON对象:“bookmarks”对象。
{"bookmarks":[{"Link":"www.example.com","Desc":"Interesting link"}]}

***们可以在Link或者Desc中注入恶意脚本。如果DOM和可执行程序被注入了,XSS目录也会被注入。这是使终端用户感染恶意内容的另一种方法。
(3)JS数组中毒
JS数组是另一个比较普遍的序列化对象。人们可以很容易地跨平台移植它,并且它在使用不同语言的结构中也很有效。感染一个JS数组可以扰乱整个DOM环境。***们可以在浏览器中使用简单的跨站点脚本***JS数组。下面是一个JS数组的例子:
new Array(“Laptop”, “Thinkpad”, “T60”, “Used”, “900$”, “It
is great and I have used it for 2 years”)

该数组是从一个拍卖二手笔记本的网站传出来的。如果这个数组对象在服务器端没有被仔细处理,***就可以在最后字段中注入脚本。这种注入将危及浏览器安全并被***者利用。
(4)被修改的XML数据流
Ajax调用接受来自多个地址的XML。这些XML块来自运行在SOAP,REST或者XML-RPC的网络服务。这些网络服务是由从第三方的代理桥那里接收过来的。如果这些第三方XML数据流被***者修改过,那么***者就可能向其中注入恶意内容。
浏览器从它自带的XML解析器接收该数据流。该解析器容易受不同的XML×××的***。人们也可以在该数据流中注入脚本,这样就可以导致跨站点脚本***(XSS)。浏览器接收未经认证的XML数据流的话,这就会危及终端客户端的安全。
(5)DOM中脚本注入
前四个漏洞都是由于序列化问题引起的。一旦浏览器收到序列化的对象数据流,开发者会发出某种调用来访问DOM。这种调用的目的是将新内容“重写”或 者“重填”入DOM中,可以调用eval()这个定制功能,也可以使用document.write()。如果这些调用是在不受信任信息流上进行的,浏览 器就有可能由于DOM的操作漏洞而受***。***者可以用很多document.*()调用来向DOM环境中注入XSS。
例如,这段JavaScript代码:Document.write(product-review)。
在这里,“Product-review”是从第三方blog上获得的变量。如果它含有JavaScript会怎样?答案很明显。这个JavaScript就会被浏览器运行。
(6)跨域访问和回调
Ajax不能从浏览器跨域访问。所有比较流行的浏览器都有个安全特性,那就是拦截跨域访问。一些网站服务为对象序列提供回调功能。开发者可以使用这 个功能来把网站服务整合到浏览器本身。人们可以把该功能名传回,这样浏览器一找到回调对象数据流,它就会被浏览器中早已有的特殊功能名执行。
这个回调对使用浏览器内认证的开发者来说是个额外负担。如果输入的对象数据流未经浏览器认证那么终端客户端就会成为跨域***的目标。不管是有意还是 无意的,跨域服务可以向浏览器中注入恶意内容。该跨域调用在当前DOM环境中运行,于是导致当前对话也易受***。在实现应用之前,人们需要仔细检查整个跨 域功能。
(7)RSS和Atom注入
联合的反馈,RSS以及Atom,是最普遍的一种将站点更新信息传到网络上的方法。许多新闻,博客,门户站点等等,都在网络上共享多个反馈。反馈是 标准的XML文档,并且可以被任何程序接收。Web2.0应用使用窗口小部件或者浏览器内部元件整合了联合反馈。这些组件调用Ajax来访问反馈。
这些反馈可以被终端用户方便地选择。一旦用户选择了它们,这些反馈就会被解析并注入到DOM中。那么如果这个反馈在注入之前没有被适当地认证过,就 会出现一些安全问题。人们可以往浏览器中注入恶意链接或者JavaScript代码。注入之后,就大事不妙了,最终结果是XSS和对话被***拦截。
(8)单击×××
Web2.0应用可能不会很简单地就被***攻下,但他们可以对它进行基于事件的注入。人们可以将带有"
这也是由于人们从那些没有经过正确验证的不受信任源处获得的信息,所导致的安全漏洞。为了利用该安全漏洞,它需要终端客户端触发一个事件。这个事件 也许是诸如点击按钮或者链接的这种无害事件,但是点击后就使会用户损失惨重。它可能引起某个恶意事件,将当前对话信息发送给目标,又或者在当前浏览器环境 中执行一系列脚本***。
(9) 基于Flash的跨域访问
***们可以使用Flash插件的Ajax接口,从而用浏览器中的JavaScritps发出GET和POST请求。这个接口使***们能进行跨域调 用。为了避免安全问题,该Flash插件实现了根据策略访问其他域的功能。该策略可以通过在域的根部放置crossdomain.xml文件来配置。如果 放置的文件配置不当——很普遍的现象——它就可能允许跨域访问。下面是一个配置不当的XML文档:
现在可以从浏览器自身发出跨域调用了。这个结构还有一些其他安全问题。基于Flash的丰富网络应用(RIA)如果配置错误的话,很容易由于Ajax的跨域访问Bug而被***。
(10) XSRF
跨域伪造请求(XSRF)是个老牌的***向量了,它迫使浏览器向不同的域发出HTTP GET或者POST请求;这些请求可以跨域在运行的应用逻辑中启动某种事件。它可能请求修改密码或者电子邮件地址等。浏览器调用它后,它重放cookie 并获得身份认证。这就是该请求的关键部分。如果某个应用只根据cookie来判识身份,那么该***就会成功。
Web2.0中Ajax是就XML-RPC,SOAP或者REST与后端网络服务进行对话的,通过GET和POST可以进行这些调用。换句话说,人 们可以对这些网络服务进行跨站点调用,从而危及受害者与网络服务接口的身份信息。XSRF这个***向量很有趣,它在这个新界定的端点情况中创造了新的层 次。这些终点可能是为Ajax或者网络服务而准备的,但它们也有可能被跨域请求所激活。
对安全漏洞的***以及相应对策
Web2.0应用有多个终端点;每个点都是威胁的侵入点。为了保证安全,我们应当保护好所有这些点。在将第三方信息发送给客户端之前要对其进行彻底处理。
为了处理Ajax序列,必须在它们到达DOM之前对输入数据流进行验证。XML解析以及跨域安全问题也需要额外重视,并实施更好的安全管理措施。我 们应当遵循那个最简单最笨拙的原则:不让未经认证的跨域信息进入浏览器。有趣的是,到目前为止,安全专家们都不主张使用客户端脚本来进行输入验证,因为这 很容易被规避掉。
Web2.0促成了很多浏览器安全相关的新的漏洞。利用这些安全漏洞很难但不是不可能。安全问题以及促成因素结合起来将严重影响那些大的网络团体,比如能被***者蠕虫和病毒利用的那些组织。最终将导致身份信息的泄漏。
结论
本文简单地讲了一些可能出现的关于Ajax漏洞。还有很多其他潜在的漏洞,比如利用跨域代理来在浏览器中建立单项通道或者存储变量。
Web2.0中很多逻辑都转到了客户端。这会将整个应用暴露给一些严重的威胁。对整合来自多方的、不受信源的数据的迫切要求也将全面增加风险向 量:XSS,XSRF,跨域问题以及客户端上的序列,还有不安全的网站服务,服务器端的XML-RPC和REST访问。相反地,Ajax可被用来构造优美 的无缝数据整合。但是,任一不安全的调用或者信息流都会使其产事与愿违的效果,从而促成可被利用的安全漏洞。
这些新技术向量很有前景,令很多人兴奋不已,但是***者,病毒和蠕虫作者对它更感兴趣。为了保障安全,开发者应当在这些细节方面格外小心。

=============================================
原文链接:[url]http://www.net-security.org/article.php?id=956&p=1[/url]
原文作者:Shreeraj Shah
原文来源:net square

转载于:https://blog.51cto.com/xu20cn/95762

Web2.0十大Ajax安全漏洞以及成因相关推荐

  1. Web2.0规模涌现 首届Web2.0十大创新品牌揭晓

    本次评选于2006年8月1日正式启动,由<财经时报>.<财经文画>主办,新浪.搜狐.网易.腾讯网.TOM在线.雅虎中国.赛迪网.天极网.硅谷动力.千龙网.和讯.猫扑.中华网.M ...

  2. 2005年博客与web2.0十大最拽的武侠人物

    2005年,网络江湖被博客和web2.0炒得沸沸扬扬高潮迭起.在乱世当中,谁是武林中的主角?西门吹草今天就胡扯几段,评出2005年博客与web2.0十大最拽的武侠人物.究竟这些人是英雄还是小人,是善还 ...

  3. 。2005年博客与Web2.0 十大武侠人物

    2005年,网络江湖被博客和web2.0炒得沸沸扬扬高潮迭起.在乱世当中,谁是武林中的主角?西门吹草今天就胡扯几段,评出2005年博客与web2.0十大最拽的武侠人物.究竟这些人是英雄还是小人,是善还 ...

  4. 跨站点请求伪造_十大常见web漏洞——跨站点请求伪造(CSRF)

    CSRF介绍 什么是CSRF呢?我们直接看例子. https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829 ...

  5. 十大Ajax框架 排名不分先后

    转自:http://subject.csdn.net/ajaxframework.htm引语 毫无疑问,Ajax作为当前最火爆的技术之一,其优秀的框架层出不穷.Prototype.Dwr.Dojo.J ...

  6. 十大常见web漏洞及防范

    十大常见web漏洞 一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了 ...

  7. 十大Web服务器漏洞扫描工具

    [收藏]十大Web服务器漏洞扫描工具 现在有许多消息令我们感到Web的危险性,因此,当前如何构建一个安全的Web环境成为网管员和安全管理员们义不容辞的责任.但是巧妇难为无米之炊,该选择哪些安全工具呢? ...

  8. owasp十大漏洞_OWASP十大网络应用安全漏洞

    OWASP(The Open Web Application Security Project)是一个提供关于网络应用安全的无偏见.实用信息的非盈利组织.OWASP十大网络应用程序安全风险在2017年 ...

  9. 2014黑帽大会揭露十大恐怖安全漏洞!

    2014年度黑客大会再次召开,黑客和安全大牛们齐聚拉斯维加斯,向世人展示他们的惊人技能.从能入侵飞机的代码到监视监控摄像头,再到把任意USB设备变成攻击工具--尽管这些安全问题,看起来是耸人听闻了些许 ...

最新文章

  1. Ubuntu中C代码静态检查工具Splint的安装配置和使用
  2. Android开发实践:以“专业”的态度处理多线程
  3. c:#ifndef, #define, #endif 作用
  4. 【OpenCV3】cv::compare()使用详解
  5. Linux中的基础IO(二)
  6. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载...
  7. Java foreach
  8. 为何你的网络爬虫技术提升缓慢?甚至小白无从下手学习?
  9. 求助:可以使用任何编程工具做成一个控件或组件,使得在VB中能调用并得到摄像头的参数及图片。...
  10. eclipse提示打不开java虚拟机
  11. Microsoft Office 2010 中的 Office 检测到此文件有问题
  12. MSF利用pcshare控住目标主机
  13. favi.icon是什么?
  14. 计算机科学家手抄报图片,关于简洁又漂亮的科学手抄报图片
  15. SQL反模式:实体-属性-值(EAV)问题(一)
  16. 金属按钮开关如何接线
  17. 新手怎么开通抖音小店?详细操作步骤分享,建议收藏
  18. java 后台打开新页面_Java后台打开浏览器窗口
  19. SEdb:超级增强子数据库简介
  20. 简仪USB101—数据采集助手集锦

热门文章

  1. scrollTop 用法说明
  2. ASP.NET Forms验证 实现子域名(SubDomain)共享登陆下的缺陷 [转]
  3. 微服务四个常见问题,以及SpringCloud Netflix和SpringCloud Alibaba和Apache Dubbo zookeeper区别
  4. LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime
  5. linux 查看端口号
  6. C++——有关chrono库的duration
  7. LeetCode 374. Guess Number Higher or Lower
  8. 在终端/命令行下打开文件浏览器窗口--Win cmd Ubuntu terminal
  9. 二叉树的遍历-递归与非递归 - 海子
  10. 多态的两种用法 形参与返回值 java