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

时间:2019-06-21 19:03:01

标签: php mysql sql smtp phpmailer

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

为此,我要保存数据库中提供的信息,必填字段之一是SMTP密码,我需要以原始状态保存该密码,而不能进行任何哈希处理。我需要这种方式,因为PHPMailer需要密码,而不是哈希。

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

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

PS:我忘了提到我使用XAMPP来开发应用程序。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

永远不要在数据库中存储纯文本密码。正如其他评论者所指出的那样,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']引用您的值。