目前,symphony 在数据库中存储用户密码的 MD5,相关代码如下:
final JSONObject user = new JSONObject();
user.put(User.USER_NAME, userName);
user.put(User.USER_EMAIL, email);
user.put(User.USER_PASSWORD, DigestUtils.md5Hex(password));
user.put(UserExt.USER_APP_ROLE, appRole);
user.put(UserExt.USER_STATUS, UserExt.USER_STATUS_C_VALID);
早在十余年前,MD5 已被证实不安全。因而,建议更新 Hash 算法并检查是否存在其它算法问题,一些供参考的算法如下:
- 非对称加密算法:RSA2048 (国际) 、SM2(国内)。
- 对称加密算法:AES256 (国际) 、SM4 (国内)。
- Hash 算法:SHA256 (国际) 、SM3 (国内)。
此外,在存储密码时,需要加盐后进行 Hash,保证即使攻击者获取了数据库中的密码,也无法在短时间内破译以实现任意用户登录,相关实现可以参考 SpringSecurity 中的 BCryptPasswordEncoder。
目前,symphony 在数据库中存储用户密码的 MD5,相关代码如下:
早在十余年前,MD5 已被证实不安全。因而,建议更新 Hash 算法并检查是否存在其它算法问题,一些供参考的算法如下:
此外,在存储密码时,需要加盐后进行 Hash,保证即使攻击者获取了数据库中的密码,也无法在短时间内破译以实现任意用户登录,相关实现可以参考 SpringSecurity 中的 BCryptPasswordEncoder。