虽然经过约10年的广泛应用,但目前因特网上的Web应用程序仍然充满漏洞。在了解Web应用程序面临的安全威胁以及如何有效应对这些威胁方面,整个行业仍未形成成熟的意识。目前几乎没有迹象表明上述问题能够在不远的将来得到解决。
也就是说,Web应用程序的安全形势并非静止不变。尽管SQL注入等熟悉的传统漏洞还在不断出现,但已不是主要问题。而且,现有的漏洞也变得更难以发现和利用。几年前只需使用浏览器就能够轻易探测与利用的小漏洞,现在需要花费大量精力开发先进技术来发现。
Web应用程序安全的另一个突出趋势为:攻击目标已由传统的服务器端应用程序转向用户应用程序。后一类攻击仍然需要利用应用程序本身的缺陷,但这类攻击一般要求与其他用户进行某种形式的交互,以达到破坏用户与易受攻击的应用程序之间交易的目的。其他软件安全领域也同样存在这种趋势。随着安全威胁意识的增强,服务器端存在的缺陷首先应为人们所理解并得到解决,从而可以在进一步的研究过程中将注意力集中在客户端。本书描述的全部攻击类型中,那些针对其他用户的攻击是发展最快的攻击类型,也是当前许多研究的焦点所在。
技术领域的各种最新趋势在一定程度上改变了Web应用程序的安全状态。一些极具误导性的热门词汇使这些趋势深入人心,下面是一些最热门的词汇。
Web 2.0。这一术语指更大范围地采用实现用户生成内容和信息共享的功能,以及采用各种广泛支持这一功能的技术,包括异步HTTP请求和跨域集成。
云计算。这一术语指更多地通过外部服务提供商来实施技术栈的各个部分,包括应用程序软件、应用程序平台、Web服务器软件、数据库和硬件。它也指在托管环境中大量采用虚拟化技术。
和技术领域的大多数变革一样,这些趋势也催生了一些新型攻击,并导致现有攻击产生变体。虽然这些趋势受到人们的大肆追捧,但鉴于其导致的各种问题,它们并不像人们最初认为的那样会带来颠覆性的改变。我们将在本书的相应部分讨论与这些及其他最新趋势有关的安全问题。
尽管Web应用程序发生了所有这些改变,一些典型漏洞并未表现出任何减少的迹象。它们继续出现,方式与Web技术发展初期大致相同。这些漏洞包括业务逻辑缺陷、未能正确应用访问控制以及其他设计问题。即使在应用程序组件紧密集成及"一切皆服务"的时代,这些问题仍然会广泛存在。