【问题标题】:How to hide sensitive data from developers如何对开发人员隐藏敏感数据
【发布时间】:2014-09-28 13:34:07
【问题描述】:

我想知道如何为我们的 PHP 项目向一些开发人员隐藏敏感数据(数据库密码和其他密码)。我们正在为我们的项目使用 Subversion。仅仅禁止某些用户访问我们拥有带有密码的文件的文件夹就足够了吗?还有其他建议吗?

【问题讨论】:

  • 不要在SVN中存储敏感数据,也许吧?将您的密码和其他此类信息保存在不会提交到存储库的配置文件中。
  • 只需创建一个配置示例,只在生产服务器上添加敏感数据。因此,例如在 svn 中,您有 config.php.example 文件,而在生产环境中,您将此文件复制到 config.php

标签: php svn passwords


【解决方案1】:
  1. 不要在任何代码版本控制系统中存储敏感数据。保持变量为空。
  2. 首次结帐后,在本地设置变量。
  3. 对于分布式/远程数据库,只需为该用户创建另一个访问权限即可访问该数据库并提供凭据。
  4. 设置值后,将这些文件排除在以后更新之外。

【讨论】:

    【解决方案2】:

    您可以拥有一个存储敏感数据的数据库表,并且只有具有正确凭据的用户才能从中读取。 每个开发人员都必须输入用户名和密码才能通过一些配置文件访问数据库。 此外,您不需要为每个开发人员设置用户和密码,因为您可以拥有 3 个访问级别,因此只需创建 3 个用户,即 DeveloperAdmin(可以更改密码表) DeveloperTrustedRead(可以读取密码表) DeveloperNotTrusted(无法访问密码表) 因此,您为不受信任的开发人员分发相同的数据库用户通行证。

    【讨论】:

      【解决方案3】:

      应该够了。

      如果您想实施一种经济高效且安全的方式,让不同的人以不同的安全级别访问同一资源(受密码保护的资源,作为数据库),请查看此答案Different ways to store a password variable in a Java web application? 并实施该选项3这样

      • 创建多个用户名/密码以访问同一资源 - 就像另一个答案建议数据库中的 DeveloperTrustedRead、DeveloperNotTrustedRead 等角色,每个角色都有不同的用户名和密码。 DeveloperNotTrustedRead(对于数据库)不应创建过程、更改表、删除表、访问除他操作的数据库以外的其他数据库等。
      • 在您的应用程序中使用不同的密钥加密每个角色的用户名/密码(即选项 3)
      • 为不受信任的开发人员提供仅用于解密与权限较少的角色相关的用户名/密码的密钥,例如 DeveloperNotTrustedRead 或 DeveloperNotTrustedWrite

      通过这种方式,您可以在 SVN 中分发任何文件,因为您将持有用于解密重要凭证的密钥,而分发的密钥将提供对不太强大/危险的权限集的访问。

      仅当您需要他们访问受密码保护的资源(即数据库)但您担心将高权限授予不受信任的人时才有意义,因此您希望最小化他们对数据库(或任何其他受保护的资源)并轻松共享代码。

      【讨论】:

        猜你喜欢
        • 2020-04-29
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 2019-07-13
        相关资源
        最近更新 更多