【问题标题】:How to secure database configuration file in project? [duplicate]如何保护项目中的数据库配置文件? [复制]
【发布时间】:2013-02-03 20:39:18
【问题描述】:

我在 php 文件上创建了用于与数据库服务器建立连接。在这个文件中,我使用mysql_connect() 函数,参数为我的数据库服务器的主机、用户名和密码。

public class DatabaseConnect
{
function __construct()
{
    mysql_connect('localhost','username','password') or die('Could not connect to mysql server.');
    mysql_select_db('databasename');
}

}

现在在这种情况下,用户名和密码对其他人可见。

我找到了另一种方法来保护该值,即mysql.default_usermysql.default_password。在什么情况下我们必须这样?

或者我怎样才能保护我的价值观不受他人影响?

【问题讨论】:

    标签: php mysql secure-coding


    【解决方案1】:

    现在在这种情况下,其他人可以看到用户名和密码。

    仅限那些有权访问您的源代码的人。这应该不是问题。但是,如果您想将代码和数据库凭据分开,请确保配置文件位于 Web 根目录之外。

    【讨论】:

      【解决方案2】:

      您可以尝试将数据库凭据放在具有适当 UNIX 权限集(例如 644)的单独文件中,然后将此文件包含在脚本之上。

      configuration.php 文件如下所示:

      <?php
      define (DB_USER, "mysql_user");
      define (DB_PASSWORD, "mysql_password");
      define (DB_DATABASE, "database_name");
      define (DB_HOST, "localhost");
      ?>
      

      您的原始脚本将如下所示:

      require ("configuration.php");
      public class DatabaseConnect
      {
      function __construct()
      {
          mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die('Could not connect to MySQL server.');
          mysql_select_db(DB_DATABASE);
      }
      
      }
      

      【讨论】:

      • 刚刚在您的配置文件规范中使用了复制和粘贴(怪我;-))。必须在变量名周围添加引号才能使其工作。
      • get_defined_constants() 可以很容易地将它们暴露给邪恶的开发者。
      猜你喜欢
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2017-11-06
      相关资源
      最近更新 更多