Кто-то может украсть пароль из JAVA-приложения?

Это - что-то, что можно испытать сами с OpenSource, http://www.geoserver.org http://www.openlayers.org и наконец, что не менее важно, http://geowebcache.org/

, необходимо быть в состоянии установить минимальную среду, которая делает что-то подобное maps.google за несколько часов.

6
задан Sam 19 August 2014 в 07:15
поделиться

5 ответов

Как уже отмечалось, да, кто угодно может извлечь пароль различными способами. Шифрование пароля на самом деле не поможет - если он расшифрован приложением, расшифрованная форма также будет присутствовать в какой-то момент, плюс сам ключ расшифровки (или код) становится уязвимостью. Если он отправляется куда-то еще в зашифрованном виде, то простого знания зашифрованной формы достаточно, чтобы подделать транзакцию, так что это тоже не очень помогает.

По сути, пока «злоумышленник» является также «отправителем», вы он в конечном итоге будет взломан - вот почему музыкальная и видеоиндустрия не может заставить DRM работать.

Я предлагаю вам взять копию Прикладной криптографии и прочитать первый раздел " Криптографические протоколы ». Даже не вдаваясь в математику реальной криптографии, это даст вам хороший обзор всех видов шаблонов проектирования в этой области.

11
ответ дан 8 December 2019 в 04:09
поделиться

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

К уменьшить вероятность того, что это произойдет, храните пароль только в виде обычного текста, когда вам действительно нужно, а затем выгрузите или зашифруйте его. Здесь следует отметить, что JPasswordField возвращает char [], а не строку. Это потому, что вы не можете контролировать, когда строка исчезнет. Хотя у вас также нет контроля над тем, когда char [] исчезнет, ​​вы можете заполнить его мусором, когда закончите с паролем.

Я говорю «уменьшить», так как это никого не остановит. Пока пароль находится в памяти, его можно восстановить, а поскольку дешифрование также должно быть частью результата, его тоже можно взломать, оставив пароль открытым.

7
ответ дан 8 December 2019 в 04:09
поделиться

This has nothing to do with Java - the exact same problem (if it really is one) exists for applications written in any language:

  • If the executable contains a password, no matter how obfuscated or encrypted, everyone who has access to the executable can find out the password.
  • If an application knows a password or key temporarily (e.g. as part of an network authentication protocol) then anyone who can observe the memory the application is executing in can find out the password.

The latter is usually not considered a problem, since a modern OS does not allow arbitrary applications to observe each other's memory, and privilege escalation attacks typically rely on different vectors of attack.

4
ответ дан 8 December 2019 в 04:09
поделиться

If the program knows the password, anybody using the program can extract the password.

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

In theory you could just hook it up to the debugger... set a breakpoint...and read the string contents

2
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

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