如何在django中安全地存储第三方服务的密码?

时间:2013-04-30 14:49:53

标签: django encryption passwords password-protection password-encryption

我在Django上运行一个Web服务。用户注册到我的系统并向我提供第三方Web服务的登录详细信息(用户名和密码)。

我的目的是以最好和最安全的方式存储这些细节。 不幸的是,我的服务需要这些数据用于查询第三方服务的一些离线脚本,因此我无法存储使用用户密码加密的登录/密码(并将其用于密钥来解密它们。

我在stackoverflow上阅读了很多文章,但其中大部分(如:What is the best way to store password in database when API call requires sending of password in plain text?)都不需要对这些数据进行“离线”访问。

我唯一的想法是将这些详细信息存储在一个非常安全的服务器上,该服务器只接受来自我的django服务器的请求,并通过tls隧道进行通信。

你还有其他想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

首先,其他文章是正确的:永远不要以明文形式存储密码。如果您得出结论,您需要以纯文本形式存储它们,您需要重新考虑您的策略(Oauth?)。使用散列密码和盐的全部原因是,即使出现问题,密码也是安全的(因为没有密码,只有哈希......)。我实际上想知道你究竟需要这些第三方用户名和密码的原因是什么?

如果您确实必须存储这些内容,请使用加密文件或数据库字段,以便在脚本运行时您需要手动输入解密密码。我假设你不是每5分钟运行一次这个脚本,而是每周运行一次。除此之外,请确保执行此操作的服务器没有执行任何其他操作,并且没有其他本地用户,否则可以分析内存并找到解密的密码。

总而言之,我仍然会说你正在尝试的是非常非常危险的,你应该非常小心......