Web2.0安全性分析----web2.0安全|web安全|网站安全|ajax安全

来源:百度文库 编辑:神马文学网 时间:2024/03/28 18:12:40
作者:徐毅 王红阳
Web2.0拥有众多令人激动的崭新应用,却也带来了新的安全挑战与管理威胁。面对信息互联网的爆炸式发展,如何在迅速设计、发布Web2.0应用的同时,兼顾需要注意的安全问题,自然也成为了架构师们讨论的一个热点议题。 Web2.0的概念始于O’Reilly与 MediaLive International的一次会议。自此之后,尽管针对Web 2.0的准确定义还存在着许多争论,但无疑Web2.0已经在互联网产业中逐步生根了。无论是从技术角度还是人文角度出发,Web2.0都被赋予了大量的应用,blog、TAG、SNS、RSS、wiki等均占据着显赫的位置。 技术体系的演变 Web的发展基本同步了网络客户端的发展,客户端由早期近乎于哑终端的形态发展到今天所具有的强大处理能力,功能和性能的飞跃势必带动需求的不断提高,Web发展的每一步都有着客户端需求的印记。 早期的静态HTML页面只能显示一些简单的内容,也反映了当时客户端处理能力和需求的有限,这一时期的安全问题也并不引人瞩目,直到CGI脚本技术的出现和应用,Web安全问题才被作为一个单独的安全命题加以认识和讨论,当客户端强大到足以分担计算、实现令人炫目的功能时,Web2.0安全问题也被逐渐关注。 Web2.0既是人文概念也是技术概念,作为Web技术的发展和自然演进,Web2.0并非脱离早期Web技术的更迭版本,也不是单纯的技术升级。应该认识到,很多技术已经存在并发展了很长时间,不应将其作为所谓Web版本区分的标准。 因此,作为信息需求的产物,讨论Web2.0的安全问题不能人为的割裂和原有技术的关联性,也就是不能孤立地讨论Web2.0体系下发展出的技术,如仅仅讨论AJAX(Asynchronous JavaScript And XML)的安全问题。 对于Web2.0而言,Client/Server 结构向Web Services 结构的转变使得讨论其安全性不能像早期的Web应用一样一概而论。但是,众所周知,要具体实现一项Web应用,无论是否是基于Web2.0的,Web服务器、实现Web服务的软件系统、后台数据库系统,以及具体的数据提交、组织、交互技术实现手段(如XML、CGI、AJAX)等都是必不可少的。因此,和Web 1.0相同,Web2.0仍然需要关注服务端系统、数据库系统、实现技术等方面的安全问题,而相关问题的分类仍然是参照Web访问结构,即服务端、客户端、信道(如图2所示)。 应该看到,Web2.0所充斥着的大量技术概念,零散的讨论其安全性是毫无意义的。因此,对于Web2.0中具体的实现技术,如AJAX套用Web2.0中的原子内容(Atom Content)的概念,在讨论其安全性时,应该就其实现细节加以“拆分”,在所获得的“原子技术”(Atom Technology)基础上入手,并详细地加以分析。 Web安全问题 在Web1.0应用中,很多安全问题都是人们耳熟能详的,其主要的安全风险可概括为: ·远程代码执行 (Remote Code Execution) ·权限提升 (Privilege Escalation) ·信息泄漏 (Information Disclosure) ·内容修改 (Content Manipulation) ·拒绝服务 (Denial of Service) 无论是Web1.0还是Web2.0,依照Web访问的结构,可将其分为对Web服务器的安全威胁、对Web客户端的安全威胁和对通信信道的安全威胁。因此,在讨论Web安全时,仅考虑Web服务端安全性的思维惯性是片面的。 一.Web服务器的安全 在Web安全中,服务器的安全是最为人津津乐道的内容。针对Web服务器具体的安全威胁主要体现在以下几个方面: ·服务器程序编写不当导致的远程代码执行(Buffer Overflow)。 ·CGI程序编写不当、过滤不严格造成的代码注入(SQL Injection),可能引起信息泄漏、文件越权下载、验证绕过、远程代码执行等。 ·乐观相信用户输入、过滤不严导致跨站脚本攻击(XSS,Cross Site Script),在欺骗管理员的前提下,通过精心设计的脚本获得服务端Shell。 ·针对服务器系统的拒绝服务攻击(Denial of Service)。 二.Web客户端的安全 Web2.0应用的迅速普及,客户端交互力量获得了极为充分的释放和发挥,客户端的安全必然会成为Web安全的下一轮焦点如同“Web1.5”时代后台数据库系统进入Web安全视野一样。 Java Applet、ActiveX、Cookie等技术的大量应用,当用户使用浏览器查看、编辑网络内容时,采用了这些技术的应用程序会自动下载并在客户机上运行,如果这些程序被恶意使用,可以窃取、改变或删除客户机上的信息。对于恶意程序的侵害,用户很难实时的判断程序性质,因此,在获得高度交互的Web服务时,如何抵御这些安全威胁绝非简单的客户端设置就可以解决的。 同时,跨站脚本攻击(XSS)对于客户端的安全威胁同样无法忽视,跨站脚本攻击属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。与之相对的是,利用XSS的Web 2.0蠕虫已经在网络中肆虐过。 三.Web通信信道的安全 和其他的Internet应用一样,Web信道同样面临着网络嗅探(Sniffer)和以拥塞信道、耗费资源为目的的拒绝服务攻击(Denial of Service)的威胁。 需要注意的是,很多针对Web应用的攻击并非只针对服务端、客户端或信道,综合利用各方面的安全漏洞进行攻击的案例数不胜数。 以上列举的安全威胁并非2.0版本之前Web所独有,正如前文所述,割裂、孤立的考虑Web2.0的安全是有失偏颇的。分析Web2.0的安全首先应考虑Web安全,其次考虑融合了新事物的“2.0安全”,我们在Web 2.0命题中至少应该注意以下潜在的安全威胁: ·SQL注入 ·跨站脚本攻击(XSS)和脚本注入(Script Injection) ·缓冲区溢出(Buffer Overflow) ·JavaScript安全 ·客户端应用程序的安全 ·拒绝服务攻击(Denial of Service) ·网络嗅探(Sniffer) 实现之路有多远? Web2.0中,大量“原子技术”(如客户端Script技术)对于Web2.0来说是作为其必要条件存在的,Web2.0诞生的新的技术和方法很难加以笼统的概括。因此,这里当前仅以AJAX为例对特定的Web2.0安全进行讨论。 AJAX技术的动人之处在于异步(Asynchronous),在提供流畅、快捷和人性化的Web体验的同时,对其安全性的疑问从未停止,而第一款开源AJAX扫描器Sprajax的发布再一次将AJAX安全推到了用户的面前。随着越来越多的使用AJAX技术的应用出现,很多组织将必须考虑潜在的安全缺陷以及性能问题。 ·脚本问题 AJAX的安全威胁来自于日益复杂的服务端脚本和客户端脚本,采用优良的程序设计和编码方法可以有效降低风险。 ·XMLHttpRequest对象的安全问题 JavaScript的XmlHttpRequest对象是AJAX的核心,XMLHttpRequest对象允许客户端机器通过HTTP请求获得XML文档,如果服务器响应重定向到本地文件的请求,脚本安全检查将会绕过并且文件可访问,这将导致泄露敏感信息给远程攻击者。 另外,在安全实践部署中,根据可验证的XMLHttpRequest的本地数据读取能力,以及XMLHttpRequest与服务器之间的交互能力,客观上存在着客户端数据泄漏的可能。 ·拒绝服务更容易发生 由于使用了异步机制,攻击性客户端的负担比以往要轻的多,可以发动更多的资源发起拒绝服务攻击,例如发送大量的脏数据,服务器的拒绝服务很容易发生。一种结果就是服务器资源耗尽,或者因为拒绝服务而引起服务器宕机。 从这一点意义上来说,信息安全工程师可建议在具体的AJAX实现中参照下列要点给予必要的重视。比如,进行SQL注入测试的问题;进行跨站脚本攻击和脚本注入测试的问题;通过编码或借助于其他设备对收到的请求进行源验证的问题。 值得一提的是,通过约束、拒绝和过滤对请求数据进行检查,确保数据的真实性、正确性的问题也非常重要;在实施过程中,工程师还必须考虑进行必要的身份验证,这样才能保障AJAX的可能。图1 Web的自然演进和安全问题图2 Web 2.0安全的结构性划分