一、sql注入:通过把'恶意sql命令'插入[攻击者操作]到'web表单递交或输入域名或页面请求的查询字符串'[用户操作],最终达到欺骗服务器以执行恶意sql命令。当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击[攻击者可能会通过恶意sql命令,获得对数据库的访问权限,就可以对网站数据库中的数据进行破坏]。另外,如果代码使用存储过程,而这些存储过程作为包含未筛选的[也就是没有经过安全验证的]用户输入的字符串来传递,也会发生sql注入。
二、sql注入的原因:利用设计上的漏洞,在目标服务器上运行,动态生成sql语句时没有对用户输入的数据进行验证是产生sql注入的主要原因。sql注入能够使攻击者绕过认证机制,完全控制远程服务器上的数据库。
三、sql注入攻击的主要形式:1)直接将代码插入到与sql命令串联在一起并使其得以执行的用户输入变量上。因为其与sql语句捆绑,故也被称之为直接注入式攻击法。2)将恶意代码注入到要在表中存储或者作为源数据储存的字符串中。该字符串会连接到一个动态sql命令中,以执行一些恶意的sql代码,此为一种间接的方式。
四、注入实现的操作过程:注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。
举个例子:以直接注入式攻击为例:在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“--”来终止注入的字符串。执行时,系统会认为此后语句为注释,故后续的文本将被忽略,不被编译与执行。