我有一个基于日期的盐,用于使用 Spring Security 存储我们的用户密码。日期存储在 MySQL 中,没有任何时区特定信息。salt 函数实际上在加盐过程中最终使用了 java.sql.Timestamp。
我们正在考虑将服务器移动到另一个时区,我想知道这是否会以某种方式影响安全检查
更新。好的,这就是我发现的
- Hibernate 返回时间戳而不是日期
- Spring Security 使用提供的 salt 对象的 toString 方法
- Date 的 toString 方法包含一个时区,如果您移动服务器并且您的盐基于它,则可能会出现拼写问题。
- 但是,Timestamp 的 toString 方法不包含时区信息。
- 因此,如果您将盐日期对象创建为时间戳,那么您就是黄金
- 但是,MySQL 返回的时间戳在第二级被截断,所以我结束了创建时间戳,截断纳秒并将其分配给我的日期。