自动登录Java应用程序

问题描述 投票:-1回答:1

我正在编写一个Java程序,其中用户必须使用其用户名和密码登录。我想让用户保持登录状态,以便不需要在程序每次启动时都执行登录过程。

我目前的实现方式是使用java.util.pref.Preferences并存储上次登录用户的用户名,并存储是否应自动登录此用户。此方法有效,但可以轻松操作,因为您可以手动修改首选项值(通过更改HKEY_CURRENT_USER中的值)。然后可以在“首选项”中保存一些用户名,并保存该用户应自动登录,因此可以绕过密码。因此,这似乎不是适当的安全实现。

可以通过哪种方式安全地实现,从而使密码无法通过轻松地操作存储的数据来绕过?

java authentication autologin
1个回答
0
投票

使用特定的加密算法将用户名放入“首选项”。

(加密用户名,然后将其放入“首选项”。)

假定正常情况(将加密的用户名放入“首选项”时。)

  • 已请求普通用户。

    • 应用程序获取用户名
    • 加密用户名并将加密后的值放入“首选项”中>
    • 获取用户状态(通过加密的用户名)

假设攻击场景

  • 攻击者将其用户名放在首选项中(攻击者不知道用户名的加密

    ]
  • 要求攻击者

    • 应用程序获取用户名
    • 加密用户名并将加密后的值放入“首选项”中>
    • 此用户名的状态为null。(加密的valuekey不存在)]

    攻击者用户名的加密值与攻击者已注册的纯用户名

有关加密首选项的更多信息,您可以使用下面的链接

Encrypted Preferences in Java

© www.soinside.com 2019 - 2024. All rights reserved.