Как каждый хранит хэши пароля надежно в памяти при создании учетных записей?

Попробуйте, надеюсь, это вам поможет. Благодарю

.wrapper {
  position: relative;
}

.wrapper img {
  width: 100%;
}

.wrapper label {
  color: #fff;
  font-size: 24px;
  position: absolute;
}

.wrapper #id1 {
  left: 20px;
  top: 20px;
}

.wrapper #id2 {
  right: 20px;
  top: 20px;
}

.wrapper #id3 {
  left: 20px;
  bottom: 20px;
}

.wrapper #id4 {
  right: 20px;
  bottom: 20px;
}

.wrapper #id5 {
  right: 20px;
  top: 50%;
  transform: rotate(90deg)
}

.wrapper #id6 {
  left: 20px;
  top: 50%;
  transform: rotate(-90deg)
}
<div class="wrapper">
  <label id="id1">Text Left!</label>
  <label id="id2">Text Right!</label>
  <label id="id3">Text Bottom Left!</label>
  <label id="id4">Text Bottom Right!</label>
  <label id="id5">Text Rotate Right!</label>
  <label id="id6">Text Rotate Left!</label>
  <img src="https://keyassets.timeincuk.net/inspirewp/live/wp-content/uploads/sites/12/2015/07/Depth-of-field-landscape.jpg" alt="" />
</div>

6
задан Vineet Reynolds 14 March 2009 в 16:45
поделиться

6 ответов

Если бы у Вас есть возможность (может быть трудным в веб-приложениях), было бы лучше сохранить пароли в символьных массивах, чем сохранить их в строках. Если Вы закончили хранить пароль, можно перезаписать его в памяти при помощи Array.fill () и сделать ссылку, доступную для сборщика "мусора" путем отбрасывания его:

Arrays.fill(password, ' ');
password = null;

Я просто заметил, что обнуление пароля будет немного параноидальным, но можно сделать, если это заверяет Вас :)

6
ответ дан 8 December 2019 в 13:49
поделиться

При создании хеша на стороне клиента не должно быть никакой потребности думать об этой проблеме. Простой пароль никогда не отправляется серверу.

3
ответ дан 8 December 2019 в 13:49
поделиться

Вы не используете Строку. Вы используете символ [] и затем перезаписываете символ [] при выполнении.

Нет абсолютно никаких гарантий когда дело доходит до сборки "мусора" (кроме которого будет работать финализатор, прежде чем объект собран). GC никогда не может работать, если он работает, он никогда не может GC Строка, которая имеет пароль в нем.

5
ответ дан 8 December 2019 в 13:49
поделиться

Используйте запрос на ввод пароля:

  1. Сервер выбирает значение проблемы и отправляет его Клиенту
  2. Сервер выполняет перевод с 1 путем с паролем и проблемой, напр. MD5(CONCAT(challenge, password)) и присваивает его сессии.
  3. Незашифрованный пароль теперь из объема и готов к сборке "мусора".
  4. Клиент также выполняет тот же перевод и отправляет результат на Сервер.
  5. Если Сервер и Клиент выбирают то же окончательное значение, клиент аутентифицируется.

Этот метод предотвращает атаки с повторением пакетов, но требует, чтобы значение проблемы было очень непредсказуемо (случайный) и не часто снова используемый (долго).

Незашифрованный пароль находится только в объеме во время обработки начального запроса на установление соединения - не во время аутентификации. Не имеет значения, какой длины результат перевода с 1 путем находится в объеме (не, собрал "мусор"), потому что это имеет мало значения воспроизведения.

0
ответ дан 8 December 2019 в 13:49
поделиться

Два слова: Локальный Объем. Заявленные переменные для обработки пароля должны иметь абсолютный самый маленький возможный объем.

После того как переменные выходят из объема, объекты имеют право на сборку "мусора".

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

2
ответ дан 8 December 2019 в 13:49
поделиться

Нет никакого способа гарантировать, что пароли в виде открытого текста удалены из памяти в Java.

Однако хакеру не нужен доступ к памяти программы для получения паролей в виде открытого текста. Существуют намного более простые пути (такие как сниффинг пакетов), таким образом, очень маловероятно, что любой полагался бы на этот подход.

Лучший подход должен сделать, чтобы клиент зашифровал пароль, как @Mork0075 предполагает. Однако, в то время как это означает, что Вы не можете легко получить пароль, программа может все еще получить зашифрованную версию паролей и тем самым симулировать быть пользователем. Путь вокруг этого состоит в том, чтобы зашифровать целое соединение с помощью SSL.

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

1
ответ дан 8 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: