Web 2.0技术 - 《互联网草根革命:Web 2.0时代的成功方略》

来源:百度文库 编辑:神马文学网 时间:2024/05/02 16:12:28
浅谈Web 2.0安全性
时间: 2006-09-19  来自:绿盟科技

Web 2.0的概念始于O’Reilly与 MediaLive International的一次会议,自此之后,尽管针对Web 2.0的准确定义还存在着许多争论,但无疑Web 2.0已经逐步生根了。无论是从技术角度还是人文角度出发,Web 2.0都被赋予了大量的应用,blog、TAG、SNS、RSS、wiki等均占据着显赫的位置。
Web 2.0拥有众多令人激动的崭新应用,新技术的采用所可能产生的新的安全问题逐渐成为了人们关注的焦点。一如Web 1.0应用的安全问题,在Web 2.0出现具体的、可验证利用的安全漏洞和威胁之前,在设计、发布Web 2.0应用时重点需要注意的安全问题也就自然成为了我们讨论的议题。
一、技术体系的演变
Web的发展基本同步了网络客户端的发展,客户端由早期近乎于哑终端的形态发展到今天所具有的强大处理能力,功能和性能的飞跃势必带动需求的不断提高,Web发展的每一步都有着客户端需求的印记。
早期的静态HTML页面只能显示一些简单的内容,也反映了当时客户端处理能力和需求的有限,这一时期的安全问题也并不引人瞩目,直到CGI脚本技术的出现和应用,Web安全问题才被作为一个单独的安全命题加以认识和讨论,当客户端强大到足以分担计算、实现令人炫目的功能时,Web 2.0安全问题也被逐渐关注。
Web 2.0既是人文概念也是技术概念,作为Web技术的发展和自然演进,Web 2.0并非脱离早期Web技术的更迭版本,也不是单纯的技术升级。应该认识到,很多技术已经存在并发展了很长时间,不应将其作为所谓Web版本区分的标准。因此,作为需求的产物,讨论Web 2.0的安全问题不能人为的割裂和原有技术的关联性,也就是不能孤立地讨论Web 2.0体系下发展出的技术,如仅仅讨论 Ajax 的安全问题。

图1  Web的自然演进和安全问题
对于Web 2.0而言,Client/Server 结构向 Web Services 结构的转变使得讨论其安全性不能像早期的Web应用一样一概而论。但是,众所周知,要具体实现一项Web应用,无论是否是基于Web 2.0的,Web服务器、实现Web服务的软件系统、后台数据库系统,以及具体的数据提交、组织、交互技术实现手段(如XML、CGI、AJAX)等都是必不可少的。因此,和Web 1.0相同,Web 2.0仍然需要关注服务端系统、数据库系统、实现技术等方面的安全问题,而相关问题的分类仍然是参照Web访问结构,即服务端、客户端、信道。

图2  Web 2.0安全的结构性划分
对于Web 2.0所充斥着的大量技术概念,零散的讨论其安全性是毫无意义的。因此,对于Web 2.0中具体的实现技术,如AJAX(Asynchronous javascript And XML),套用Web 2.0中的原子内容(Atom Content)的概念,在讨论其安全性时,应该就其实现细节加以“拆分”,在所获得的“原子技术”(Atom Technology)基础上入手加以分析。
二、Web安全问题
在Web 1.0应用中,很多安全问题都是我们耳熟能详的,其主要的安全风险可概括为:
远程代码执行 (Remote Code Execution)
权限提升 (Privilege Escalation)
信息泄漏 (Information Disclosure)
内容修改 (Content Manipulation)
拒绝服务 (Denial of Service)
无论是Web 1.0还是Web 2.0,依照Web访问的结构,可将其分为对Web服务器的安全威胁、对Web客户端的安全威胁和对通信信道的安全威胁。因此,在讨论Web安全时,仅考虑Web服务端安全性的思维惯性是片面的。
1.Web服务器的安全
在Web安全中,服务器的安全是最为人津津乐道的内容。针对Web服务器具体的安全威胁主要体现在以下几个方面:
l服务器程序编写不当导致的远程代码执行(Buffer Overflow)。
lCGI程序编写不当、过滤不严格造成的代码注入(SQL Injection),可能引起信息泄漏、文件越权下载、验证绕过、远程代码执行等。
l乐观相信用户输入、过滤不严格导致跨站脚本攻击(XSS, Cross Site Script),在欺骗管理员的前提下,通过精心设计的脚本获得服务端Shell。
l针对服务器系统的拒绝服务攻击(Denial of Service)。
2.Web客户端的安全
Web 2.0应用的迅速普及,客户端交互力量获得了极为充分的释放和发挥,客户端的安全必然会成为Web安全的下一轮焦点――如同“Web 1.5”时代后台数据库系统进入Web安全视野一样。
Java Applet、ActiveX、Cookie等技术的大量应用,当用户使用浏览器查看、编辑网络内容时,采用了这些技术的应用程序会自动下载并在客户机上运行,如果这些程序被恶意使用,可以窃取、改变或删除客户机上的信息。对于恶意程序的侵害,用户很难实时的判断程序性质,因此,在获得高度交互的Web服务时,如何抵御这些安全威胁绝非简单的客户端设置就可以解决的。
同时,跨站脚本攻击(XSS)对于客户端的安全威胁同样无法忽视,跨站脚本攻击属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。与之相对的是,利用XSS的Web 2.0蠕虫已经在网络中肆虐过。
3.Web通信信道的安全
和其他的Internet应用一样,Web信道同样面临着网络嗅探(Sniffer)和以拥塞信道、耗费资源为目的的拒绝服务攻击(Denial of Service)的威胁。
需要注意的是,很多针对Web应用的攻击并非只针对服务端、客户端或信道,综合利用各方面的安全漏洞进行攻击的案例数不胜数。
以上列举的安全威胁并非2.0版本之前Web所独有,正如前文所述,割裂、孤立的考虑Web 2.0的安全是有失偏颇的。分析Web 2.0的安全首先应考虑Web安全,其次考虑融合了新事物的“2.0 安全”,我们在Web 2.0命题中至少应该注意以下潜在的安全威胁:
SQL注入
跨站脚本攻击(XSS)和脚本注入(Script Injection)
缓冲区溢出(Buffer Overflow)
javascript安全
客户端应用程序的安全
拒绝服务攻击(Denial of Service)
网络嗅探(Sniffer)
三、Web 2.0实现技术的安全问题
Web 2.0中,大量“原子技术”(如客户端Script技术)对于Web 2.0来说是作为其必要条件存在的,Web 2.0诞生的新的技术和方法很难加以笼统的概括。因此,我们仅以AJAX(Asynchronous javascript And XML)为例对特定的Web 2.0安全进行讨论。
AJAX技术的动人之处在于异步(Asynchronous),在提供流畅、快捷和人性化的Web体验的同时,对其安全性的疑问从未停止,而第一款开源AJAX扫描器Sprajax的发布再一次将AJAX安全推到了用户的面前。随着越来越多的使用AJAX技术的应用出现,很多组织将必须考虑潜在的安全缺陷以及性能问题。
脚本问题
AJAX的安全威胁来自于日益复杂的服务端脚本和客户端脚本,采用优良的程序设计和编码方法可以有效降低风险。
XMLHttpRequest对象的安全问题
javascript的XmlHttpRequest对象是AJAX的核心,XMLHttpRequest对象允许客户端机器通过HTTP请求获得XML文档,如果服务器响应重定向到本地文件的请求,脚本安全检查将会绕过并且文件可访问,这将导致泄露敏感信息给远程攻击者。
另外,根据可验证的XMLHttpRequest的本地数据读取能力,以XMLHttpRequest与服务器之间的交互能力,存在着客户端数据泄漏的可能。
拒绝服务更容易发生
由于使用了异步机制,攻击性客户端的负担比以往要轻的多,可以发动更多的资源发起拒绝服务攻击,例如发送大量的脏数据,服务器的拒绝服务很容易发生。一种结果就是服务器资源耗尽,或者因为拒绝服务而引起服务器宕机。
在简要描述AJAX应用过程中需要注意的一些安全问题的同时,也建议在具体的AJAX实现中参照下列要点给予必要的重视:
进行SQL注入测试
进行跨站脚本攻击和脚本注入测试
通过编码或借助于其他设备对收到的请求进行源验证
通过约束、拒绝和过滤对请求数据进行检查,确保数据的真实性、正确性
进行必要的身份验证
不要为了“AJAX”而“AJAX”