保存 SMTP 密码供以后使用,不带哈希

Saving SMTP password for later use, without hash

我创建了一个 PHP 应用程序,其中有一个设置面板,用户必须在其中提供应用程序运行所必需的一些数据。有关 SMTP 设置的字段,用户将提供,以便应用程序可以在 t 时向客户发送确认电子邮件。

为了做到这一点,我保存了数据库中提供的信息,必填字段之一是 SMTP 密码,我需要以原始状态保存它,不进行任何散列。我需要这种方式,因为 PHPMailer 需要原样的密码,而不是散列。

我担心这种方法的安全性,因为我不想以纯文本形式保存它,但我也需要这种方式才能发送电子邮件。

关于这个问题我需要一些建议。

PS:我忘了说我使用 XAMPP 开发应用程序。

提前致谢!

永远不要在数据库中存储明文密码。正如其他评论者所指出的,Web 根目录之上的 .env 配置文件是一种标准方法。但是,您采用的方法取决于您的应用程序的托管方式。例如,如果您在 AWS 上托管应用程序,推荐的方法是将凭证存储为可以像这样访问的环境变量:

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->SMTPAuth = true;
    $mail->Host = $_SERVER['SES_HOST'];
    $mail->Username = $_SERVER['SES_USERNAME'];
    $mail->Password = $_SERVER['SES_PASSWORD'];
    $mail->SMTPSecure = 'ssl';

可以使用 .env 文件采用相同的方法。或者,如果您使用的是 Apache,则可以将变量添加到 httpd.conf 文件,如下所示,然后通过引用 $_SERVER 全局变量来访问它们:

SetEnv SES_PASSWORD strongpassword123

因为您提到您正在使用 XAMPP(所以 Apache),打开 Apache 配置并修改 httpd.conf 文件并将上面的 SetEnv 行添加到该文件的底部。重新启动 Apache 服务后,您将能够使用 $_SERVER['var_name'] 引用您的值。