Как мы можем хранить пароль, кроме обычного текста? - PullRequest
19 голосов
/ 19 апреля 2010

Я нашел множество сообщений в stackoverflow о том, как хранить пароли пользователей. Тем не менее, мне нужно знать, каков наилучший способ сохранить пароль, необходимый моему приложению для связи с другим приложением через Интернет? В настоящее время нашему веб-приложению необходимо передавать данные на удаленный веб-сайт. Для загрузки данных наше веб-приложение считывает пароль из текстового файла и создает заголовок с полезными данными и отправляет его через https.

Этот пароль в текстовом виде в файловой системе является проблемой. Есть ли способ надежнее хранить пароль?

Это ОС Linux, и приложение написано на python и не компилируется.

Спасибо!

Дополнительные разъяснения: Нет пользователей, вовлеченных в этот процесс вообще. Пароль, хранящийся в файловой системе, используется другим веб-приложением для проверки подлинности веб-приложения, отправляющего запрос. Чтобы выразить это словами комментатора ниже: «В этом случае приложение является клиентом другого удаленного приложения». (Спасибо, Джо, за помощь в прояснении.)

Ответы [ 8 ]

4 голосов
/ 19 апреля 2010

Я не думаю, что вы найдете надежный способ сделать это. Я бы предложил комбинацию вещей для достижения «безопасности по неизвестности»:

  • сохранить файл пароля на другом компьютере, чем тот, который будет его использовать
  • сохранить путь к файлу в отдельном конфигурационном файле в приложении nachine
  • использовать разрешения для ограничения доступа к файлам конфигурации и паролей только для вашего процесса
  • проверять доступ к файлам, если ваша система это позволяет (вести журнал того, кто касался файлов)
  • присваивает папкам и файлам безобидные имена (/usr/joe/kittens.txt?)
  • блокировать физический доступ к компьютеру (компьютерам) (удаленный хостинг, или закрытый шкаф, или что-то)
4 голосов
/ 19 апреля 2010

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

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

0 голосов
/ 01 марта 2017

Защита пароля для автоматического входа в систему

Функция LsaStorePrivateData может использоваться серверными приложениями для хранения клиентских и машинных паролей.

Только для Windows

0 голосов
/ 19 апреля 2010

Не думаю, что вы понимаете предоставленные ответы. Вы нигде не храните простой текстовый пароль и не передаете его на другое устройство.

Вы писали: извините, но проблема в хранении пароль в файловой системе ... Это пароль необходим для аутентификации другое веб-приложение.

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

  1. получить пароль P от пользователя
  2. хранить в зашифрованном виде (например, соленый хеш) пароль Q где-то относительно обеспечение
  3. забыть P (даже очистить буфер вы раньше читал)
  4. отправить Q на удаленный хост H
  5. H получает пароль P 'от пользователя, когда необходимо
  6. H вычисляет Q 'из P', сравнивает Q ' Q для равенства
0 голосов
/ 19 апреля 2010

Ваше веб-приложение размещено на ферме? Если нет, то такая технология, как DPAPI , позволит вам зашифровать пароль, чтобы его можно было расшифровать только на том компьютере, на котором он был зашифрован.

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

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

РЕДАКТИРОВАТЬ: DPAPI хорош только если вы размещаете на Windows, конечно ...

0 голосов
/ 19 апреля 2010

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

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

0 голосов
/ 19 апреля 2010

Вы можете использовать алгоритмы шифрования двустороннего ключа, такие как RSA, Пароль хранится в файловой системе в зашифрованном виде (ключом, который хранится в мозге пользователя), но для декодирования пароля пользователь должен ввести ключ.

0 голосов
/ 19 апреля 2010

Вы можете сохранить его как результат алгоритма хеширования, это односторонний алгоритм (например, MD5 или SHA). При аутентификации вы вычисляете пароль MD5, введенный пользователем, и проверяете равенство с сохраненным хешем пароля MD5 для этого пользователя. Если пароль равен, то все в порядке.

Для получения дополнительной информации об алгоритмах хэширования вы можете посетить:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...