首页 > 解决方案 > 如何使用数据库密码?

问题描述

我对php很陌生。目前我正在做一个项目,应该从数据库服务器获取数据,然后将其返回给客户端。我有这个小代码片段:

<?php
  $host_name = 'host';
  $database = 'db';
  $user_name = 'user';
  $password = 'passwd';
  $link = new mysqli($host_name, $user_name, $password, $database);

  if ($link->connect_error) {
    die('<p>Connection failed</p>');
  } else {
    echo '<p>Connection success.</p>';
  }
?>

丑陋的部分是,密码是写在源代码中的。当使用 gitlab 或类似的东西时,密码总是被上传 - 在每个软件版本中。这(当然)是一个巨大的安全风险。我怎样才能使它更安全?将密码存储在文件中并使用 php 读取文件以获取数据库密码 - 这是一个好的解决方案吗?

标签: phppasswords

解决方案


为此,您可以使用Laravel 之类的框架,但这将是您开发过程中的重大变化。Laravel 所做的是生成一个.env文件。此文件包含所有应用凭据(数据库、邮件等)。您也可以这样做:制作一个不在您的 git 中的文件(将其添加到您的 git 中.gitignore)(例如 JSON 文件)。克隆存储库时,您只需创建此文件。

例如,一个名为的 JSON 文件credentials.json

{
    "database": {
         "login": "your-login",
         "password": "your-secret-password"
     }
}

您可以使用 PHP 轻松读取 JSON 文件。

显然,您必须管理您.htaccess的文件以使该文件无法从外部读取。

注意:您可以在 git 存储库中添加一个空白文件以保留 JSON 文件结构,而无需在 a 中提供凭据credentials-example.json

{
    "database": {
         "login": "",
         "password": ""
     }
}

克隆后,您只需重命名文件并添加凭据。


推荐阅读