在php中保护数据库密码

php mysql database security

1109 观看

3回复

1881 作者的声誉

我是Web开发的新手。我很好奇人们是怎么做到的。

我正在编写一些使用mysql DB的PHP代码。我现在在代码中硬编码了密码。所有开发人员都可以检查此代码,因此每个人都可以访问密码。对我来说似乎非常错误。最重要的是,我可以想到一些并发症。我以子弹形式列出问题 -

  1. 在代码中硬编码的密码是错误的。我不希望所有开发人员都可以访问它,因为他们都可以查看代码。

  2. 如何区分生产和开发服务器/凭证?我有相同的文件包含prod和dev DB凭据。处理这个问题的最佳方法是什么?

  3. 我想防止懒惰/醉酒时间,以便开发人员不删除/删除表等。我显然可以有不同的访问不同的开发人员。所有这一切的解决方案是什么?

可能的解决方案:代码中没有密码。请devs自己添加密码,并确保它从未签入。

解决方案的问题:繁琐的部署过程。必须手动为生产/ QA部署添加密码,并确保每次部署前都能够连接到数据库。听起来太痛苦且容易出错。人们通常做什么?

也在同一张纸条上(与上述问题有关)

  1. 如果团队中有4个开发人员,您如何设置开发环境?他们都使用相同的数据库吗?如果不是,您如何创建表并使用测试数据填充表?您是否必须编写代码来填充测试数据?

非常感谢任何输入。

作者: user220201 的来源 发布者: 2011 年 7 月 13 日

回应 (3)


5

7455 作者的声誉

决定

将密码放在一个单独的PHP文件中,其中包含您的所有应用程序设置,并将其包含在页面顶部。然后,可以将此文件保留在Version Control之外,并替换每个部署。

确保您将config.php文件(或您选择的任何名称)保留在根目录之外,以便不会意外地将其提供给您应用的任何用户。此外,作为进一步的预防措施,请确保您为其提供.php扩展名,以便如果它仍然以某种方式提供服务,则应首先由PHP解析,并删除任何有用的信息(希望) - 通常的做法是因此将其命名为扩展名.conf.php.inc.php扩展名。

至于Dev Environment,我们使用所有开发人员共享的单个数据库。它最初是从实时客户端数据创建的,克隆到我们的数据库中,出于隐私原因,某些信息被编辑/替换。在我们的开发构建中使用相同的数据库以及我们的localhost构建。

作者: a_m0d 发布者: 13.07.2011 07:28

1

8613 作者的声誉

在您描述的那种情况下,您可以编写一个部署脚本,自动在源代码中的正确位置“填充”密码。然后,您的生产密码仅驻留在生产环境部署脚本中。您可以让开发人员手动将其添加到自己的本地环境中。

此外,您可以拥有一个包含所有这些设置的配置文件,并让您的应用程序从中加载它们,或者甚至是其他人建议的单独的php文件。配置/ php文件不应该在源代码管理中,并且每个开发人员都可以自己创建,并且您可以在生产中使用正确的文件。

作者: Francisco Soto 发布者: 13.07.2011 07:28

1

23971 作者的声誉

这通常通过同时具有配置文件的开发和生产版本来解决。生产版本包含开发数据库的连接信息(服务器名称,数据库名称,用户名,密码)。所有开发人员都可以查看此文件。

生产版本包含生产服务器的连接信息,不受信任的开发人员无法读取。将代码部署到生产站点时,请不要部署配置文件的开发版本。生产服务器的版本将保持不变。

您可以考虑从版本控制中完全删除配置文件。使用此方案,每个开发人员将维护自己的版本或可以从标准位置访问开发版本。

作者: George Cummins 发布者: 13.07.2011 07:28
32x32