如何隐藏开发人员的敏感数据

时间:2014-09-28 13:34:08

标签: php svn passwords

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

应该就够了。

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

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

通过这种方式,您可以在SVN中分发任何文件,因为您将持有密钥来解密重要的凭据,而分布式密钥将允许访问功能较弱/危险的权限集。

这只有在您需要它们才能访问受密码保护的资源(即数据库)时才有意义,但您担心会为不受信任的人提供高权限,因此您希望最小化其对数据库(或任何其他受保护的)的权限资源)并继续轻松共享代码。