接下来本节将说明安全隐患产生的原因,据此就可以理解为何笔者之前会说“Web应用程序开发者对安全隐患已经司空见惯”。 首先,产生安全隐患的原因可分为以下两类。 (A)由Bug造成 (B)由检验功能不完善造成 情况(A)包含SQL注入(SQL Injection)和跨站脚本(Cross Site Scripting,简称XSS)等极具影响力的著名的安全隐患。此类隐患不仅发生场所与安全性毫不相关,而且波及范围能扩散至整个应用程序,着实让人头疼。因此,开发团队的每一个成员在编写应用程序时就必须具有极强的安全意识,但可惜目前还有很多开发团队并未这么做。 另一方面,目录遍历(Directory Traversal)漏洞是情况(B)中一个代表性的例子。产生此类安全隐患的原因是很多开发者缺乏执行安全检验的意识,而且同(A)一样,它造成的影响也会波及整个应用程序。 由此可见,Web应用的安全隐患可以被形象地比喻为“在意想不到的地方隐藏着的一个很深的陷阱”。因此,一直以来安全隐患都在源源不断地产生。但是,与真正的陷阱不同的是,我们能够通过学习提前得知哪里会有陷阱。