部署在Internet上的WEB应用毫无疑问每时每刻都在遭受着各种考验,有些是出自恶意的破坏者(Cracker),有些是来自无心的攻击者(中了病毒或是木马的菜鸟),还有一些是来自系统内部的出于好奇或是有目的的恶意访问。下面是计算机安全学会CSI(www.gocsi.com)协同旧金山联邦调查局开展的2002计算机犯罪和安全调查提供的数字:
90%的被调查者在过去12月中探测到有计算机漏洞
74%的被调查者称其Internet连接遭受频繁攻击,而40%的被调查者探测到有来自外部的系统渗透;
75%的被调查者估计他们在过去所受的攻击的一部分可能来自心怀不满的雇员。
而根据CERT的统计(www.cert.org),2002年度收到的与安全相关的报告事件的数目是43136个,2001年是51658个,2000年是21756个。毫无疑问,安全问题正在成为计算机领域的关键问题,作为具有最多访问方式和最大的网络基础的WEB应用,其面临的安全考验更是严峻。
据知,国内的公司很少会专门为自己的WEB项目进行安全性测试,而且,大部分公司也不知道着手进行安全性测试。
一般来说,一个WEB应用包括WEB服务器运行的操作系统、WEB服务器、WEB应用逻辑、数据库几个部分,其中任何一个部分出现安全漏洞,都会导致整个系统的安全性问题。
对操作系统来说,最关键的操作系统的漏洞,例如Unix上的缓冲区溢出漏洞、Windows上的RPC漏洞、缓冲区溢出漏洞、安全机制漏洞等等;
对WEB服务器来说,WEB服务器从早期仅提供对静态HTML和图片进行访问发展到现在对动态请求的支持,早已是非常庞大的系统,即使发展多年的Apache也难逃经常被发现安全漏洞的缺陷,更不要说千疮百孔的IIS了;
对应用逻辑来说,根据其实现的语言不同、机制不同、由于编码、框架本身的漏洞或是业务设计时的不完善,都可能导致安全上的问题;
对数据库来说,数据库注入攻击一直是数据库厂商和网站开发者的噩梦。
除此之外,安全问题还存在于管理等各个方面,不完善的管理制度、缺乏安全意识的员工都会是内部的突破口,同样,一些开发工具生成的备份文件和注释也会成为Cracker发送攻击的参考资料。
对WEB的安全性测试是一个很大的题目,首先取决于要达到怎样的安全程度。不要期望网站可以达到100%的安全,须知,即使是美国国防部,也不能保证自己的网站100%安全。对于一般的用于实现业务的网站,达到这样的期望是比较合理的:
1、能够对密码试探工具进行防范;
2、能够防范对cookie攻击等常用攻击手段;
3、敏感数据保证不用明文传输;
4、能防范通过文件名猜测和查看HTML文件内容获取重要信息;
5、能保证在网站收到工具后在给定时间内恢复,重要数据丢失不超过1个小时;
最后补充一点,浏览器的漏洞也可能会导致网站的不安全。