我创建了一个PHP应用程序,其中有一个设置面板,用户必须在其中提供一些应用程序正常工作所需的数据。用户将提供有关SMTP设置的字段,以便应用程序可以在t时向客户发送确认电子邮件。
为此,我要保存数据库中提供的信息,必填字段之一是SMTP密码,我需要以原始状态保存该密码,而不能进行任何哈希处理。我需要这种方式,因为PHPMailer需要密码,而不是哈希。
我担心此方法的安全性,因为我不想将其保存为纯文本格式,但是我也需要这种方式才能发送电子邮件。
关于这个问题,我需要一些建议。
PS:我忘了提到我使用XAMPP来开发应用程序。
提前谢谢!
答案 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']引用您的值。