当执行验证机制时,Web应用程序开发者可以采用各种不同的技术:
基于HTML表单的验证;
多元机制,如组合型密码和物理令牌;
客户端SSL证书或智能卡;
HTTP基本和摘要验证;
使用NTLM或Kerberos整合Windows的验证;
验证服务。
到目前为止,Web应用程序中最常用的验证机制是使用HTML表单获取用户名和密码,并将它们提交给应用程序。因特网上90%以上的应用程序都采用这种机制。
在更加注重安全的因特网应用程序(如电子银行)中,这种基本的机制通常扩展到几个阶段,要求用户提交其他证书,如PIN号码或从机密字中选择的字符。HTML表单仍主要用于获取相关数据。
最为注重安全的应用程序(如为进行巨额交易的个人提供服务的私人银行)通常采用使用物理令牌的多元机制。这些令牌通常产生一组一次性口令,或者基于应用程序指定的输入执行一个质询-响应功能。随着这种技术的成本日渐降低,可能会有更多应用程序采用这种机制。但是,许多这类解决方案实际上无法解决它们旨在解决的威胁,主要是钓鱼攻击和使用客户端木马的威胁。
一些Web应用程序使用客户端SSL证书或在智能卡中执行加密机制。但是,由于管理和分配这些项目的成本非常高昂,通常只有那些用户不多的安全极其重要的应用程序才会使用它们。
因特网上的应用程序很少使用基于HTTP的验证机制(基本、摘要和整合Windows的机制),企业内联网更常采用这种机制。这时,组织内部用户提供标准的网络或域证书,应用程序通过以上一种技术对其进行处理,再允许用户访问企业应用程序。
一些应用程序还采用Microsoft Passport之类的第三方验证服务,但暂时这种机制尚未得到大量使用。
大多数与验证有关的漏洞和攻击适用于上面提到的任何一种技术。由于绝大多数应用程序普遍采用基于HTML表单的验证,我们将描述每一种与其有关的特殊漏洞和攻击,以及与其他可用技术有关的主要差异和攻击方法。