2014-09-28 44 views
0

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

+2

敏感数据不存储在SVN,也许?请将您的密码和其他信息保存在未提交到存储库的配置文件中。 – 2014-09-28 13:36:22

+1

只需创建一个配置示例并仅在生产服务器上添加敏感数据。因此,例如在svn中,您有config.php.example文件,并且在生产中将此文件复制到config.php – Perry 2014-09-28 13:38:27

回答

2
  1. 敏感数据不存储在任何代码版本控制系统。保持变量为空。
  2. 第一次结帐后,在本地设置变量。
  3. 在分布式/远程数据库的情况下,简单地为该用户创建另一接入访问数据库并提供凭证。
  4. 设置完值后,请排除这些文件以后再更新。
0

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

0

它应该是足够的。

如果你想实现一种经济有效而又安全的方式来让不同的人以不同的安全级别访问同一个资源(密码保护的,作为数据库),请看这个答案Different ways to store a password variable in a Java web application?并执行选项3以这种方式

  • 创建多个用户名/密码访问相同的资源 - 像另一个答案建议在数据库中DeveloperTrustedRead,DeveloperNotTrustedRead等..角色,每一个不同的用户名和密码。 DeveloperNotTrustedRead(对于数据库)不应该创建过程,更改表,删除表,访问除操作的其他数据库等。
  • 使用应用程序中的不同密钥加密每个角色的用户名/密码(即选项3)
  • 给不可信开发的关键只解密连接到具有较少的权限,如DeveloperNotTrustedRead或角色的用户名/密码DeveloperNotTrustedWrite

这样你可以在SVN分发任何文件,因为你将持有解密重要凭证的密钥,而分布式密钥将允许访问不太强大/危险的一组权限。

只有当您需要它们访问受密码保护的资源(例如数据库)时,这才有意义,但您担心为不受信任的人提供高权限,因此您希望将其权限降至最低(或任何其他受保护的资源),并保持轻松共享代码。