Каков наилучший способ хранения пароля в базе данных, когда вызов API требует отправки пароля в виде простого текста? - PullRequest
8 голосов
/ 07 ноября 2011

Я пишу веб-приложение в Django, которое взаимодействует с API-интерфейсом «Читай позже» (http://readitlaterlist.com/api/docs/). Однако все вызовы API требуют отправки имени пользователя и пароля при каждом запросе.похоже, мне нужно сохранить пароль пользователя в виде обычного текста в моей базе данных. Я что-то упустил или это единственный подход, возможный в этом случае? Есть ли способ сохранить зашифрованный пароль в моей базе данных, но все жеМожно ли отправить его расшифрованную версию при вызове API? Если нет, то есть ли рекомендации, которым я должен следовать, чтобы защитить пароль пользователя?

Я уверен, что это можетЭто не единственная служба, требующая отправки пароля в виде обычного текста. Мне интересно знать, как разработчики имеют дело с такими услугами в целом. Я новичок в веб-разработке, поэтому любая помощь или указатели приветствуются.

Ответы [ 2 ]

7 голосов
/ 07 ноября 2011

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

4 голосов
/ 07 ноября 2011

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

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

...