SQL注入问题,通俗说就是我们写的sql语句被改变语意。
要求:用户输入的用户名和密码是否相符?相符就允许登录;不符就不允许登录
user表
//我们的意思:用户名是小明,密码是1234,才可以登录
//我们的sql:
select username,password from user where username="小明" and password="1234";
我们原本的意思
假如用户输入
username:"a或者别的都可以"
password:"a或者别的" or "a=a"
假如用户输入
username:"a或者别的都可以"
password:"a或者别的" or "a=a"
//被改变后的sql:
select username,password from user where username="a或者别的都可以" and password="a或者别的" or "a=a";
//这里意思就变为:查找所有username,password
/*
因为and的优先级大于or
所以where后边的语句就变为
(username="a或者别的都可以" and password="a或者别的")or "a=a"
不管(username="a或者别的都可以" and password="a或者别的")是否正确
由于or后边是
*/
被改变后的意思
总结:sql注入就是,我们用sql想表达的意思被改变