我正在编写一个Java程序,其中用户必须使用其用户名和密码登录。我想让用户保持登录状态,以便不需要在程序每次启动时都执行登录过程。
我目前的实现方式是使用java.util.pref.Preferences
并存储上次登录用户的用户名,并存储是否应自动登录此用户。此方法有效,但可以轻松操作,因为您可以手动修改首选项值(通过更改HKEY_CURRENT_USER中的值)。然后可以在“首选项”中保存一些用户名,并保存该用户应自动登录,因此可以绕过密码。因此,这似乎不是适当的安全实现。
可以通过哪种方式安全地实现,从而使密码无法通过轻松地操作存储的数据来绕过?
使用特定的加密算法将用户名放入“首选项”。
(加密用户名,然后将其放入“首选项”。)
假定正常情况(将加密的用户名放入“首选项”时。)
已请求普通用户。
假设攻击场景
攻击者将其用户名放在首选项中(攻击者不知道用户名的加密
]要求攻击者
null
。(加密的value
的key
不存在)]攻击者用户名的加密值与攻击者已注册的纯用户名
有关加密首选项的更多信息,您可以使用下面的链接