password-protection - 如何在应用程序配置中管理密码

标签 password-protection

我正在开发一个与许多外部系统 API:s 交互的系统。他们中的大多数都需要某种身份验证。为了可用性,有一个“应用程序范围可访问”的 AppConfig,用于存储配置信息以及外部系统的凭据。

我的问题是在应用程序配置文件中将用户名和密码(以明文形式)存储到外部系统是否是一个坏主意。如果是这样,你如何避免它?

为了访问配置文件,您要么必须破坏服务器的文件系统,要么破坏另一台服务器(当然也可以是任何开发人员的系统)上的 git 存储库。我一直认为在配置文件中加密密码不会提高安全级别,因为加密 key 也必须存储在某个地方。我错了吗?

我非常感谢解释您如何解决此问题的答案。

解决方案

好的,这是我的最终解决方案。我使用 OpenSSL 创建了一个简单的库来加密和解密我的敏感数据。加载配置时,会从用户那里检索 key ,但在将其存储在文件中的生产服务器上除外。它仍然不是最佳解决方案,但它比我以前拥有的“解决方案”要好得多。

谢谢您的回答。我会接受韦恩的回答,因为它是最有用的。

最佳答案

良好的安全性很难。

正如布鲁斯·施奈尔所说,“安全是一种权衡。”你必须决定你想要这些信息的安全程度,以及你想花多少时间来保护这些信息。而且您绝对不想将密码以纯文本形式留在那里,这是一个禁忌。如果您处于可以的情况下,那么您将处于不应该进行用户身份验证的情况。

尽管安全性很难,但您还是可以做一些事情。

1)使用某种类型的编译程序来进行加密/解密。您不希望有人打开 Python/perl 脚本并说“啊哈,这只是一个简单的 XYZ 加密”,尽管理想情况下您不想要简单的加密。

2)通过默默无闻的安全性不是真正的安全性,但它可以帮助防止偶然的窥探。例如,将您的文件命名为“passwords.txt”并不是一个非常好的主意,但是加密您的密码然后使用隐写术在某些图像文件中隐藏用户/密码会更好。

3)查找强加密/解密算法。其中一些已经在大多数语言中实现,您只需导入一个库即可。这可能是坏的也可能是好的,这取决于你认为你想要这些东西的安全程度。

但老实说,这个系统真的很糟糕——安全方面。理想情况下,您有一个两方身份验证,然后由受信任的中间人完成所有操作和交易。例如,当您登录计算机时,您是在告诉计算机您是授权用户。从那里你可以运行你的所有程序,他们不会询问或关心你的用户/通行证组合 - 只是你是一个授权用户。他们从操作系统(中间人)那里获得这些信息。哎呀,即使 SO 使用 openID 来确定您是受信任的用户 - 他们不关心您在其他站点上的凭据是什么,只关心其他站点说“是的,这是一个有效的用户”。

如果您有选择,我会认真考虑切换您的身份验证模型。如果没有,祝你好运。

关于password-protection - 如何在应用程序配置中管理密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100286/

相关文章:

java - MS Access 的 Java 无法识别密码

docker - 如何隐藏用户并在dockerfile中传递curl命令

php - 如何在 PHP 中使用 bcrypt 对密码进行哈希处理?

用于密码安全的 PHP 不同的单向哈希

javascript - 使用连续字母和数字的密码验证 - RegEx

ruby-on-rails - 简单地使用 rails 密码保护页面 - 我该怎么办?

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

Android Firebase 身份验证 : verify account and reset password within the App

java - Swagger-Spring Fox-隐藏密码

php - 禁止在简单的PHP登录系统中访问文件