SQL 注入是指应用程序对用户输入数据的合法性没有判断、没有过滤,攻击者可以在应用程序中通过表单提交特殊的字符串,该特殊字符串会改变 SQL 的运行结果,从而在管理员毫不知情的情况下实现非法操作,以此来实现欺骗数据库执行非授权的任意查询。 SQL 注入的特点如下:
例如,有 user 表,字段包含 username 和 password 列。我们要通过查询传入的数据来判断使用可以登录:
select * from user where username='admin' and password='00000';
如果攻击者将页面上的 password 输入框的内容输入为如下文本:
' or '1'=1'
那么组成的 SQL 语句将变为:
select * from user where username='admin' and password='' or '1'='1';
这样就形成了一个不管是否存在username 都能正常登录的 SQL 语句。