什么是SQL注入:
由于dao层中执行的SQL语句是拼接出来的,其中一部分内容是用户从用户端输入的,当传入数据包含SQL关键字时,就有可能通过这些关键字来改变SQL的语义,从而执行一些特殊的操作,这就称为SQL注入问题。
SQL注入攻击演示:
首先我们创建一张用户表,里面包含用户名和密码。
mysql> select * from user;
+----------+----------+
| username | password |
+----------+----------+
| 满满 | 123456 |
+----------+----------+
1 row in set (0.00 sec)
正常查询:
package com.JDBC;
import java.sql.*;
/**
* @Created with IntelliJ IDEA
* @Description:
* @Package: com.JDBC
* @author: FLy-Fly-Zhang
* @Date: 2019/7/6
* @Time: 18:03
*/
public class JDBCDemo1 {
public static boolean login(String userName,String passwd){
boolean result=false;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/sqldemo?SSL=false&serverTimezone=UTC","root","123456");
String sql="select * from user where username="+userName+"and password="+passwd;
Statement statement=connection.createStatement();
ResultSet resultSet=statement.executeQuery(sql);
if(res