mysql验证用户_使用MySQL验证用户的最佳方法(打开其他建议)?

我正在创建一个基于Web的登录系统,为此我使用

MySQL作为我的后端,JSPS和Servlets用于功能,还使用一个名为jasypt 1.8的库来加密密码,以便以后将它们存储在MySQL上.

我的问题是:以下代码是否有任何问题(安全相关,最佳实践等……):

protected boolean verifyUser(String user, String pass) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {

StrongPasswordEncryptor passwordEncryptor = new StrongPasswordEncryptor();

Connection conn = null;

String userName = "****";

String password = "****";

String url = "jdbc:mysql://localhost:3306/DB";

ResultSet rs = null;

try {

Class.forName("com.mysql.jdbc.Driver").newInstance();

conn = DriverManager.getConnection(url, userName, password);

System.out.println("Database connection established");

PreparedStatement stmt = null;

stmt = conn.prepareStatement("SELECT * FROM DB.LOGINS WHERE USER = ?");

stmt.setString(1, user);

rs = stmt.executeQuery();

if(!rs.next()){

return false;

}

if(passwordEncryptor.checkPassword(pass, rs.getString("Password"))){

return true;

}

conn.close();

} catch (Exception e) {

}

return false;

}

我不知道将用户从数据库中取出然后将其与提供的密码进行比较是否正确(即我认为最好的方法是使用以下方法将信息从数据库中取出用户名和密码,而不仅仅是前者.遗憾的是我无法做到这一点,因为我无法生成密钥,因为库中没有方法可以做到(而且我无法在文档中找到生成密钥的算法).

我这样做是因为我使用的库有一个内置的随机盐生成器,它将自己存储在加密后创建的字符串中(如果重要的话,使用sha-256)和方法checkPassword()是唯一能够生成与数据库中存储的密钥完全相同的密钥(已经通过加密过程).

无论如何,如果您有创建登录系统的经验或了解许多安全最佳实践,我希望您告诉我,如果您找不到合适的解决方案,那么您遇到的问题是什么.

感谢您的时间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值