SQL是访问Microsoft SQL Server、Oracle、MySQL、Sybase和Informix(以及其他)数据库服务器的标准语言。大多数Web应用都需要与数据库进行交互,并且大多数Web应用编程语言(如ASP、C#、.NET、Java和PHP)均提供了可编程的方法来与数据库相连并进行交互。如果Web应用开发人员无法确保在将从Web表单、cookie及输入参数等收到的值传递给SQL查询(该查询在数据库服务器上执行)之前已经对其进行过验证,那么通常会出现SQL注入漏洞。如果攻击者能够控制发送给SQL查询的输入,并且能够操纵该输入将其解析为代码而非数据,那么攻击者就很可能有能力在后台数据库执行该代码。
每种编程语言均提供了很多不同的方法来构造和执行SQL语句,开发人员通常综合应用这些方法来实现不同的目标。很多Web站点提供了教程和代码示例来帮助应用开发人员解决常见的编码问题,但这些讲述的内容通常都是些不安全的编码实践,而且示例代码也容易受到攻击。如果应用开发人员未彻底理解交互的基础数据库或者未完全理解并意识到所开发代码的潜在的安全问题,那么他们编写的应用通常是不安全的,易受到SQL注入攻击。
【责任编辑: 云霞 TEL:(010)68476606】
|