【发布时间】:2021-03-22 01:18:28
【问题描述】:
简而言之,下一个代码
import java.sql.*;
public class Prueba{`
public static String user="Boss";
public static String pass="123456";
public static void main(String args[]) {
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://localhost/bd_ds", "root", "");
PreparedStatement pst=cn.prepareStatement(
"select tipo_nivel, estatus from usuarios where username =' "+user
+ " ' and password =' " + pass+ " ' ");
ResultSet rs=pst.executeQuery();
System.out.println(rs.next());
}catch(Exception e) {}
}
}
变量“rs.next()”应该返回“true”
我已经打开了 XAMPP、apache 和“mysql”
我有驱动连接器
当然还有数据库
【问题讨论】:
-
您不应将值连接到查询字符串中,这会使您的代码容易受到 SQL 注入的攻击。使用带参数的准备好的语句。然而,主要问题是您在用户名和密码之前添加了空格。数据库存储用户名
'x',但您的查询要求输入用户名' x '(注意空格),通常会忽略尾随空格,但不会忽略前导空格。所以找不到用户' x',因为它只知道用户'x'。与密码相同(顺便说一句,这也是一个安全问题,你应该散列密码)