SQL 注入
SQL 注入是指攻击者篡改程序中的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来欺骗数据库服务器执行非授权的任意查询语句,从而进一步得到相应的数据信息。
SQL 注入最常出现在 “会员登陆” 功能中。例如,某用户在网站中执行登陆操作时,程序将会执行如下 SQL 语句:
select * from 用户表 where username=’用户名’ and password=’密码’
当用户输入正确的用户名、密码时,该语句将会查询到相应记录,则表示会员登陆成功。
示例1
select * from user where username=’张三’ and password=’123456’;
运行效果1
但是一些别有用心的人,会在输入用户名、密码时,嵌入恶意的 SQL 语句,以此来实现非法登陆的操作。例如,输入的用户名为 “’or 1=1;#” ,密码为任意内容。
示例2
select * from user where username=’’ or 1=1;#’ and password=’’;
运行效果2
可见这样的结果不是我们想要的,有漏洞的代码是致命的。为了防止 SQL 注入的发生,最简单的办法就是使用预处理语句。