Автоматический вход в приложение java - PullRequest
0 голосов
/ 16 января 2020

Я пишу программу java, в которой пользователь должен войти под своим именем пользователя и паролем. Я хочу разрешить пользователю оставаться в системе, чтобы не требовалось выполнять процедуру входа при каждом запуске программы.

Моя текущая реализация для этого заключается в использовании java.util.pref.Preferences и сохранении имени пользователя. из последнего зарегистрированного человека и сохраните, должен ли этот человек автоматически входить в систему. Это работает, но может легко управляться, так как вы можете вручную изменить значения предпочтений (изменив значения в HKEY_CURRENT_USER). Затем можно сохранить имя пользователя в настройках и сохранить, что этот пользователь должен войти в систему автоматически, и, следовательно, пароль можно обойти. Так что это не похоже на надлежащую безопасную реализацию.

Каким образом это можно реализовать безопасно, чтобы пароль не мог быть обойден путем манипулирования сохраненными данными (легко)?

1 Ответ

3 голосов
/ 16 января 2020

Используйте указанный алгоритм шифрования c, чтобы ввести свое имя пользователя в свои настройки.

(зашифровать имя пользователя и затем поместить его в настройки).

Предположим, что существует нормальный сценарий (когда вы вводите зашифрованное имя пользователя в «Предпочтения»).

  • Требуется обычный пользователь.

    • приложение получает имя пользователя
    • шифрует имя пользователя и помещает зашифрованное значение в настройки
    • получает статус пользователя из настроек (через зашифрованное имя пользователя)

Предположим сценарий атаки

  • Атакующий вводит свое простое имя пользователя в настройках ( атакующий не знает криптография имени пользователя )

  • Запрошенный атакующий

    • приложение получает имя пользователя
    • зашифровывает имя пользователя и помещает зашифрованное значение в Настройки
    • получить статус пользователя из Настройки. (<<code>encryptedUsername, status>)
      • статус этого имени пользователя null. (value из key не существует)

зашифрованное имя пользователя не совпадает с простым именем пользователя, которое злоумышленник зарегистрировал (манипулировал).

Подробнее информацию о Зашифрованных настройках вы можете использовать ниже по ссылке

Зашифрованные настройки в Java

Обратите внимание, что вы , Вы должны позаботиться о шифровании ключ , есть несколько способов сделать это.

Управление ключами

...