【问题标题】:Application not validating user when using prepared statement使用准备好的语句时应用程序未验证用户
【发布时间】:2021-10-17 11:43:03
【问题描述】:

我最初使用以下代码来验证有效的用户登录

 public static boolean validate(String name, String password) {
        boolean status = false;
        try {
            Connection con = DB.getConnection();
            String select = "select * from Librarian where UserName= '" + name + "' and Password='"+ password +"'";
            Statement selectStatement = con.createStatement();
            ResultSet rs = selectStatement.executeQuery(select);
          
            status = rs.next();
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        return status;
    }

我发现使用准备好的语句更好,并且上面的语句容易受到 SQL 注入的影响。下面是我尝试使用的代码

public static boolean validate(String name, String password) {
        boolean status = false;
        try {
            Connection con = DB.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from Librarian where UserName= ? and password = ?");
            ps.setString(1, name);
            ps.setString(2, password);       
            ResultSet rs = ps.executeQuery();
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        return status;
    }

这不是验证用户,我无法访问应用程序。任何帮助将不胜感激。

【问题讨论】:

  • 您在第二个区块中忘记了status = rs.next();
  • 请注意,(1) 您应该永远 将密码存储在数据库中(使用 password 哈希代替),以及 (2) 教育除外出于目的,您不应编写自己的安全代码;相反,请使用社区已经审查过的库。
  • 使用密码哈希会影响验证码吗?

标签: java sql prepared-statement


【解决方案1】:

你错过了 status = rs.next();

public static boolean validate(String name, String password) {
  boolean status = false;
  try {
    Connection con = DB.getConnection();
    PreparedStatement ps = con.prepareStatement("select * from Librarian where UserName= ? and password = ?");
    ps.setString(1, name);
    ps.setString(2, password);
    ResultSet rs = ps.executeQuery();
    status = rs.next();
    con.close();
  } catch (Exception e) {
    System.out.println(e);
  }
  return status;
}

【讨论】:

  • 成功了,谢谢,我知道这是小事
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多