在MySql中新建一个用户表user,存入用户和密码
import java.sql.*;
//演示SQL注入
public class JDBCDEMO4 {
public static void main(String[] args) throws Exception {
//1.注册驱动
// Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
//如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
String username="root";
String password="20020630";
Connection conn=DriverManager.getConnection(url,username,password);
String name="张三";//用户的账号
String pwd="1234";//用户的密码
//3.定义sql
String sql="select * from user where name='"+name+"'and pwd='"+pwd+"'";
System.out.println(sql);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
if(resultSet.next()){
System.out.println("登录成功");
}
else {
System.out.println("登录失败");
}
//7.释放资源
statement.close();
conn.close();
}
}
随便写一个账号
密码改为
'or '1'='1
import java.sql.*;
//演示SQL注入
public class JDBCDEMO4 {
public static void main(String[] args) throws Exception {
//1.注册驱动
// Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
//如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
String username="root";
String password="20020630";
Connection conn=DriverManager.getConnection(url,username,password);
String name="ddwqdsdasd";//用户的账号
String pwd="'or '1'='1";//用户的密码
//3.定义sql
String sql="select * from user where name='"+name+"'and pwd='"+pwd+"'";
System.out.println(sql);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
if(resultSet.next()){
System.out.println("登录成功");
}
else {
System.out.println("登录失败");
}
//7.释放资源
statement.close();
conn.close();
}
}
此时的sql语句变为了显示能够成功登录
使用PrepareStatement防止sql的注入
import java.sql.*;
//PrepareStatement
public class JDBCDEMO5 {
public static void main(String[] args) throws Exception {
//1.注册驱动
// Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
//如果连接的是本机的mysql服务器,并且mysql的默认端口号是3306,则url可以写为jdbc:mysql:///db1
String url="jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false";
String username="root";
String password="20020630";
Connection conn=DriverManager.getConnection(url,username,password);
String name="sdadsadsadasd";//用户的账号
String pwd="'or '1'='1";//用户的密码
//3.定义sql
String sql="select * from user where name=? and pwd=?";
System.out.println(sql);
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1,name);
statement.setString(2,pwd);
ResultSet resultSet = statement.executeQuery();
if(resultSet.next()){
System.out.println("登录成功");
}
else {
System.out.println("登录失败");
}
//7.释放资源
statement.close();
conn.close();
}
}