问答详情
源自:3-3 MySQLi中使用预处理语句防止SQL注入

为什么会有sql注入

为什么会有sql注入呢?为什么随便输入一些用户名,密码会登录成功?

提问者:qq_任重道远_1 2016-11-08 16:48

个回答

  • Lydiar3308665
    2017-06-15 15:40:03

    没用预处理,语句参数相当于把表单提交的数据当参数传递之后拼接成完整语句再查询,在执行的时候执行了别的语句。比如例子中的那个语句,本来是selete * from user where username=[参数1] and password=[参数2],但是拼接了用户传递的参数之后,执行时候是:select * from user where username='' or 1=1 # and password =[参数2],#之后相当于注释了,实际执行的就是select * from user where username='' or 1=1,而1=1为真,or true 返回true,所以实际返回的是整个表的数据。所以结果集不为0,故而显示登录成功。

  • MaxJin
    2016-11-09 15:16:11

    因为没有定义用户名和密码是用什么样的数据类型,例如字符串,整型,浮点型,布尔类型