Security 云服务上存储库中的密码

Security 云服务上存储库中的密码,security,architecture,cloud,Security,Architecture,Cloud,我最近注册了一个云托管服务,该服务允许使用GIT进行一键式应用程序设置和更新。我创建了一个WordPress应用程序并提取了代码,结果发现他们使用了我的帐户密码作为数据库密码(即我在注册服务时使用的密码) 这有点令人不安。如果我的笔记本电脑被偷了,或者在我不知道有人会轻易破坏我使用该服务托管的所有应用程序的情况下被访问。当我询问主机时,他们声称使用AES加密(而不是密码加密),并且与存储库的连接受到保护 这是一个糟糕的设计吗?永远不要在GIT回购协议中存储密码并强制对密码进行加密是否合理?我唯一

我最近注册了一个云托管服务,该服务允许使用GIT进行一键式应用程序设置和更新。我创建了一个WordPress应用程序并提取了代码,结果发现他们使用了我的帐户密码作为数据库密码(即我在注册服务时使用的密码)

这有点令人不安。如果我的笔记本电脑被偷了,或者在我不知道有人会轻易破坏我使用该服务托管的所有应用程序的情况下被访问。当我询问主机时,他们声称使用AES加密(而不是密码加密),并且与存储库的连接受到保护

这是一个糟糕的设计吗?永远不要在GIT回购协议中存储密码并强制对密码进行加密是否合理?我唯一的另一次体验是使用Heroku时,配置文件中不包含密码(而且我的密码从未以纯文本形式显示)。谢谢

啊,古老的“别担心,我们用AES!”防御。如果我理解正确的话,他们似乎将用户密码未加密地存储在一个文件中,然后用AES加密该文件。如果是这样的话,那么是的,这通常是糟糕的设计。当然,标准方法是将散列和盐渍密码存储在未加密的文件中

在加密文件中存储密码会遇到许多问题:

1) 加密文件的密码是什么?由于“海龟一路向下”的原因,你不能加密密码。它可以被偷走/猜到

2) 加密文件上存在标准密码问题。你把它做成低熵并记住了吗?你是否把它做成高熵,并把它存储在某个地方的磁盘上。两者都有明显的问题,请记住,这个关键点是整个系统的单点故障

3) 只要他们的系统需要验证密码,它就必须解密文件。因此,文件的加密密钥和所有密码都很可能以明文形式加载到服务器上的内存中


至于“他们对我的整个帐户和数据库访问都使用我的一个密码”的问题,我认为这更具争议性。一方面,您可能希望限制任何一个密码可以为您提供的访问权限。但另一方面,必须为每件小事创建不同的密码会导致错误的密码创建和密码重用

我想说的是,他们根本不应该以可以解密的格式存储密码,而是更喜欢用散列和盐渍的格式

但是,这里的问题是,他们需要代表您访问GIT存储库。这意味着密码必须在使用时由服务器解密,以便将其传递到其他系统

实际上,由于这些要求,没有真正的方法来完全保护它。但是,确保它是加密的,解密密钥可供黑客使用

使用不同的密码或相同的密码其实并不重要。如果他们的网站被黑客入侵,那么密码就可能被泄露


所以,真正的问题不是他们如何加密(其实并不重要)。真正的问题是,他们通常如何监控该网站,以确保其未被黑客入侵。这归结为他们是否在使用IDS/IPS(入侵检测/保护系统)。如果没有,请转到使用该服务的其他提供商。

谢谢您的回答。一条评论是,我相信他们正在使用AES加密将我的密码存储在他们的管理数据库中。当我“生成”一个新的应用程序时,他们从数据库中获取密码并将其添加到
config
文件中。我可以通过GIT(由ssh密钥保护)访问所有源代码。如果他们已经在一个系统中使用ssh密钥进行身份验证,那么理想的解决方案就是将其用于所有身份验证。它们只是将您的公钥存储在任何地方,您可以使用任意数量的协议证明您知道您的私钥。如果你这样做,他们的服务器上就没有黑客可以窃取的东西,这样他们就可以冒充你。我仍然不认为在这些配置文件中复制密码有什么意义。如果他们把它放在某个地方,就把它放在那里。这可能只是懒散的编程。嗨,克里斯。只是澄清一下,他们正在创建和管理GIT存储库(密码被添加到提交到repo的配置文件中)。@Kevin Sylvestre:这部分其实并不重要。如果他们的系统必须连接到GIT才能提取代码,那么该系统需要访问相应的密码。如果系统可以访问密码,那么它就容易受到黑客的攻击。这是合并系统的副作用。正确,但GIT存储库的创建和访问不使用密码身份验证(而是使用SSH密钥身份验证)。密码被提交到存储库中,以便web应用程序能够连接到数据库服务器(即,它是web应用程序的配置文件)。你说的合并系统到底是什么意思?