从 概念上讲,验证机制是Web应用程序所有安全机制中最简单的一种机制。通常,应从用程序必须核实用户提交的用户名和密码正确与否。如果正确,就允许用户登录,否则就禁止用户登录。
验证机制也是应用程序防御恶意攻击的中心机制。它处在防御未授权访问的最前沿,如果用户能够突破那些防御,他们通常能够控制应用程序的全部功能,自由访问其中保存的数据。缺乏安全稳定的验证机制,其他核心安全机制(如会话管理和访问控制)都无法有效实施。
设计一个安全的验证机制看似简单,实际上却是一件极其麻烦的事情。在现实世界中,Web应用程序验证机制通常是最薄弱的环节,由此攻击者能够获得未授权访问。我们曾见过无数应用程序由于验证机制存在各种缺陷而被攻破的实例。
本章将详细介绍困扰Web应用程序的大量设计和执行缺陷。这些缺陷之所以存在,主要是因为应用程序设计者和开发者无法回答一个简单的问题:攻击者针对验证机制实施攻击能够实现什么目标?在绝大多数情况下,只要认真分析一下某个应用程序,就可以发现许多潜在的漏洞,其中任何一个都足以破坏应用程序。
许多最常见的验证漏洞实际上极其简单。任何人都可以在登录表单中输入字典中的单词,试图猜测有效的密码。另外,应用程序中也隐藏着一些细微的缺陷,只有对复杂的多阶段登录机制进行仔细分析后才能发现它们并对其加以利用。本章将全面描述这些攻击,包括那些成功突破一些最安全、防御最稳健的Web应用程序的验证机制的技巧。