1

在用 php 编写 Web 应用程序时,防止您的 MySQL 信息被他人(第三方)泄露或发现的最有效方法是什么?这些信息将包括在连接功能中使用的域名和登录名和密码。

例如,一个好的过程可能是将您的 mysql 连接函数保存在单独的 php 文件中,等等。

有任何想法吗?

4

4 回答 4

4
  1. 将您的凭据保存在文档根目录之外的单独.php文件中(因此无法通过 Web 直接访问)
  2. 最好将它保存为一个.php文件而不是,例如,.inc这样即使它可以通过网络意外访问,它也会被执行而不是直接显示
  3. 建立连接后不要保留用户名和密码(即,在不再需要它们后取消设置保存凭据的 vars 或数组键);你不能不小心暴露你不再拥有的东西
  4. 不允许重复包含凭证文件(例如if (defined('DB_AUTH_LOADED')) return; define('DB_AUTH_LOADED', 1);在您的凭证文件中),以避免任何可能的重新定义您的凭证变量

这应该可以保护您免于直接访问您的凭据以及您自己的代码意外泄漏凭据。如果攻击者可以将 PHP 文件上传到您的服务器并设法实际执行它们,那么这场战斗几乎是失败的,但上述措施应该可以让您相当安全,避免自己意外泄露您的信用。

于 2012-09-19T09:53:23.030 回答
2

我不能说这是否是最好的,但我就是这样做的;

我有一个 config.php 文件,其中包含我的数据库连接凭据,并且不能直接访问。我有一个需要 config.php 来建立连接的 DB 类,并且我有一个扩展 DB 类的站点类。

这是一种非常普遍的做事方式,并且被普遍接受。

于 2012-09-19T09:45:48.193 回答
2

您可以做的另一件事(如果您的凭据被泄露)是确保您为 PHP 将使用的任务设置的 mysql 用户被禁止制作 DROP 语句,甚至可能是 DELETE 语句,如果您可以这样构造数据的话。

尽可能为该用户提供对其他数据库的最低访问权限,可能只有保存该用户数据的数据库。

于 2012-09-19T10:48:58.883 回答
1

课程,包括?有很多方法可以做到这一点,但最终如果有人可以访问未解析的 PHP 文件,他们将拥有您的 MySQL 登录详细信息。

于 2012-09-19T09:44:30.267 回答