当API调用需要以纯文本形式发送密码时,在数据库中存储密码的最佳方法是什么?

时间:2011-11-07 12:05:22

标签: django web-services passwords password-protection

我正在Django中编写一个Web应用程序,它与Read Read Later List API(http://readitlaterlist.com/api/docs/)连接。但是,所有API调用都需要在每次请求时发送用户名和密码。为了做到这一点,我似乎需要在我的数据库中以纯文本形式存储用户的密码。我错过了什么,或者这是唯一可行的办法吗?有没有办法在我的数据库中存储加密的密码,但是在进行API调用时能够发送它的解密版本?如果没有,那么我是否应该遵循以保护用户密码的最佳做法?

我很确定这不是唯一需要以纯文本形式发送密码的服务。我很想知道开发人员如何处理这类服务。我是网络开发的新手,所以任何帮助或指示都会受到赞赏。

2 个答案:

答案 0 :(得分:7)

您的用户是否必须登录您的网站才能使用它?如果你也正在使用密码认证方案,你可以重温一下。使用站点的登录密码作为对称密钥密码中的密钥来加密api密码。那么你只需要存储用户密码的哈希值(到你自己的网站)和远程api的加密密码。

答案 1 :(得分:4)

切勿以纯文本格式保存密码。您可以加密和解密密码,但问题是,用于加密和解密的密钥通常可供访问您服务器的任何人访问,因此不安全。

另一种方法是让他们输入密码并将其保存在加密的Cookie或会话变量或其他会在他们退出应用时过期的内容中。这样做的缺点是,每次用户使用应用程序时都必须输入密码。