本质原因:sql存在漏洞,会被攻击导致数据泄露,sql会被拼接 or 1=1。
1、红色框框住的地方,可以查出一条数据正常打印出来
2、当改写成使用绿色框的内容时候,会查出所有密码为“123456”的数据。
1、使用statement会导致sql注入
实际执行的sql如图二所示
图一
图二
二、使用prepareStatement可以避免sql注入
避免sql注入的原因:prepareStatement防止sql注入的本质,把传递进来的参数当做字符,会在外面包上一层引号,假设其中存在转义字符,就直接忽略,比如说(’)引号会被直接转义掉。