首页 > 解决方案 > 通过环境而不是硬编码提供数据库凭据

问题描述

我正在创建一个 Web 应用程序,需要连接到 MySQL 数据库。我目前正在使用 PHP 7.3。我正在使用 PDO 标准方式 ( new PDO(DB_DSN, DB_USER, DB_PASS)) 连接到 SQL 数据库,但有人告诉我以下语句:

数据库凭据应该来自环境,而不是在源代码中硬编码。

但是,我不确定如何执行此操作。

目前,该应用程序托管在 Linux 服务器上,但正在迁移到 Azure 服务器。但在我们可以迁移它之前,他们希望我按照上述方式更改 SQL 凭证配置。

我目前正在使用此处找到的 PHP 文档注释中提供的类。

标签: phpsqlazurepdo

解决方案


在 Web 应用程序中存储秘密很复杂,但大多数语言/框架都有办法做到这一点。

在 PHP 中,您可以做到的一种方法是将信息存储在环境变量中,然后您可以在运行时检索这些信息。例如,您可以使用

$DB_DSN = $_SERVER["DB_DSN"];
$DB_USER = $_SERVER["DB_USER"];
$DB_PASS = $_SERVER["DB_PASS"];

您可以使用 Azure 门户中的应用程序设置选项卡设置这些环境变量。

然后,每个环境(开发机器、测试服务器、生产服务器)都可以对这些环境变量进行不同的设置。

甚至还有一个图书馆可以帮助您解决这个问题。


推荐阅读