一 、WEB安全技术产生原因
早期:万维网(World Wide Web)仅有Web站点构成,这些站点基本上是包含静态文档的信息库。这种信息流仅由服务器向浏览器单向传送。多数站点并不验证用户的合法性。
如今:已与早期的万维网已经完全不同,Web上的大多数站点实际上是应用程序。他们功能强大,在服务器和浏览器之间进行双向信息传送。他们处理的许多信息属于私密和高度敏感信息。因此,安全问题至关重要,Web安全技术也应运而生。
二、Web程序常见漏洞
1. 不完善的身份验证措施:这类漏洞包括应用程序登陆机制中的各种缺陷,可能会使攻击者攻破保密性不强的密码,发动蛮力攻击或者完全避开登陆。
2. 不完善的访问控制措施:这一问题涉及的情况包括:应用程序无法为数据和功能提供全面保护,攻击者可以查看其他用户保存在服务器中的敏感信息,或者执行特权操作。
3. SQL注入:攻击者可通过这一漏洞提交专门设计的输入,干扰应用程序与后端数据库的交互活动。攻击者能够从应用程序中提取任何数据、破坏逻辑结构,或者在数据库服务器上执行命令。
4. 跨站点脚本:攻击者可利用该漏洞攻击应用程序的其他用户、访问其信息、代表他们执行未授权操作,或者向其发动其他攻击。
5. 信息泄露:这一问题包括应用程序泄露敏感信息,攻击者利用这些敏感信息通过有缺陷的错误处理或其他行为攻击应用程序。
三、核心安全问题
如今的Web程序的核心安全问题为:用户可提交任意输入。具体为:
1. 用户可干预客户与服务器间传送的所有数据,包括请求参数、cookie和HTTP信息头。
2. 用户可按任何顺序发送请求。
3. 用户并不限于仅使用一种Web浏览器访问应用程序。大量各种各样的工具可以协助攻击Web应用程序,这些工具既可整合在浏览器中,也可独立于浏览器运作。这些工具能够提出普通浏览器无法提供的请求,并能够迅速生成大量的请求,查找和利用安全问题达到自己的目的。
四、目前针对Web安全问题提出的核心防御机制
Web应用程序的基本安全问题(所有用户输入都不可信)致使应用程序实施大量安全机制来抵御攻击。尽管其设计细节与执行效率可能千差万别,但几乎所有应用程序采用的安全机制在概念上都具有相似性。
Web应用程序采用的防御机制由以下几个核心因素构成:
1. 处理用户访问应用程序的数据与功能,防止用户获得未授权访问。
2. 处理用户对应用程序功能的输入,防止错误输入造成不良行为。
3. 处理攻击者,确保应用程序在成为直接攻击目标时能够正常运转,并采取适当的防御与攻击措施挫败攻击者
4. 管理应用程序本身,帮助管理员监控其行为,配置其功能。
五、理论具体措施
针对以上四种原因,还有一些理论做法:
5.1 处理用户访问
几乎任何应用程序都必须满足一个中心安全要求,即处理用户访问其数据与功能。大多数Web应用程序使用三层相互关联的安全机制处理用户访问:
(1)身份验证
(2)会话管理
(3)访问控制
5.2 处理用户输入
许多情况下,应用程序可能会对一些特殊的输入实行非常严格的确认检查。例如,提交给登陆功能的用户名的最大长度为8个字符,且只能包含字母。
在其他情况下,应用程序必须接受更广泛的输入。例如,提交给个人信息页面的地址字段可合法包含字母、数字、空格、连字符、撇号与其他字符。但是仍然可以对这个字段实施有效的**。例如,提交的数据不得超过某个适当的长度**(如50个字符),并不得包含任何HTML标记(HTML mark-up)。
输入处理的几种方法:
(1)“拒绝已知的不良输入”
(2)“接受已知的正常输入”
(3)净化输入的数据:数据中可能存在的恶意字符被彻底删除掉,只留下已知安全的字符,或者再进一步处理前对他们进行适当编码或“转义”。
(4)安全数据处理:以不安全的方式处理用户提交的数据,是许多Web应用程序漏洞形成的根本原因。有些时候,可使用安全的编程方法避免常见问题。
(5)语法检查:为防止未授权访问,应用程序必须确认所提交的账号属于之前提交该账号的用户。
(6)边界确认:服务器端应用程序第一次收到用户数据的地方是一个重要的信任边界,应用程序需要在此采取措施防御恶意输入。
5.3 边界确认的必要性
当我们开始分析一些实际的漏洞时,执行这种简单的输入确认是不够的,原因为:
(1)基于应用程序所执行功能的广泛性以及所采用技术的多样性,一个典型的应用程序需要防御大量各种各样的基于输入的攻击,且每种攻击可能采用一组截然不同的专门设计的数据,因此,很难在外部边界建立一个单独的机制,防御所有这些攻击。
(2)许多应用程序功能都涉及组合一系列不同类型的处理过程。
(3)防御不同类型的基于输入的攻击可能需要对相互矛盾的用户输入执行各种确认检查。例如:防止跨站点脚本攻击可能需要将“ |