如何解决托管我的应用程序时关于 phpMailer 安全性的两个问题?
目前我正在使用 PHPMailer 在表单提交中向我的 Gmail 帐户发送电子邮件。我用于发送电子邮件的代码类似于以下代码:
###################
/* sendeng email */
###################
use PHPMailer\PHPMailer\PHPMailer;
if ($sehat === true) {
require_once "../PHPMailer/PHPMailer.PHP";
require_once "../PHPMailer/SMTP.PHP";
require_once "../PHPMailer/Exception.PHP";
$mail = new PHPMailer();
//smtp settings
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->Username = "myGmail@gmail.com";
$mail->Password = 'myPassword';
$mail->Port = 465;
$mail->SMTPSecure = "ssl";
//email settings
$mail->isHTML(true);
$mail->setFrom($commEmail,$commName);
$mail->addAddress("myGmail@gmail.com");
$mail->Subject = ("$commEmail ($commTopic)");
$mail->Body = "<div style='text-align:right; direction:rtl;'>" . nl2br(strip_tags($commMess)) . "</div>";
// $mail->Body = nl2br(strip_tags($commMess));
// $mail->AltBody = nl2br(strip_tags($commMess));
// $mail->Body = $commMess;
/* for other language messages */
$mail->CharSet = 'UTF-8';
if($mail->send()){
$status = "success";
$response = "Email is sent!";
}
else
{
$status = "Failed";
$response = "Something is wrong: <br>" . $mail->ErrorInfo;
}
exit(json_encode(array("status" => $status,"response" => $response)));
}
我发送电子邮件没有任何问题。但我的第一问题是我在代码中使用 $mail->Password = 'myPassword';
的位置。实际上,我正在本地主机 (WAMPSERVER) 上编写和调试代码,并且在代码中使用了我的真实密码而不是 myPassword。但是在完成应用程序后,我将把它托管到一个真正的服务器上(部署我的应用程序)。我的问题是,使用此代码,主机提供商可以访问我的 Gmail 密码吗?如果是这样,解决方案是什么?是 PHPMailer 中的错误还是我错了?
第二问题是,当我想将表单数据发送到我的 Gmail 帐户时,我必须在此中将 Gmail 的设置更改为“降低安全性”强>本地主机版本。如果我部署了我的应用程序并且它可以在线使用,我必须再次这样做(降低 Gmail 的安全性)或者有更好的方法吗?因为现在当我将 Gmail 安全设置返回到正常状态时,PHPMailer 不会发送数据。
解决方法
我的问题是,使用此代码,主机提供商可以访问我的 Gmail 密码吗?
是的。
如果是这样,解决方案是什么?
不要使用您不信任的主机。
,一般来说,您需要能够信任您的主机,但有一个步骤可以帮助避免这意味着的一切:使用 XOAUTH2 进行身份验证。
通过这种机制,您不必在服务器上存储真实的 ID 和密码;您需要在一次性操作中使用它们来获取可仅限于 gmail 操作的令牌。有 code examples provided with PHPMailer 以及 a utility script you can use to obtain your auth token 和 a wiki article to help you configure it(尽管它可以使用更新;欢迎贡献)。但是,请注意,使用 OAuth 通常是一种复杂且令人不快的体验,其中包含许多可能将事情搞砸的方法。在此用例中,它确实提供了安全增强功能,因为这意味着您不必留下真实的 Google 凭据。
谨慎的托管服务提供商将允许您以某种方式加密虚拟机的磁盘映像,这意味着他们无法从虚拟机管理程序读取您的数据,如果他们也没有对您的实例的 SSH 访问权限,则您的数据应该是受到很好的保护。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。