【问题标题】:md5 password with phpMailer使用 phpMailer 的 md5 密码
【发布时间】:2012-06-20 19:59:09
【问题描述】:

我使用下面的代码...

      $mail = new PHPMailer();  
      $mail->IsSMTP(); // send via SMTP
      $mail->SMTPAuth = true; // turn on SMTP authentication
      $mail->Username = $USR_EMAIL; // SMTP username
      $mail->Password = $MAIL_PWD; // SMTP password

我想问一些简单的问题.. 有没有办法将数据库中保存为 md5 格式的密码传递给 phpMailer? phpMailer 是否支持任何其他类型的散列? 是否有支持散列密码的发送电子邮件 php 脚本? 我很害怕我会在任何地方存储一个没有某种加密的电子邮件密码..

【问题讨论】:

    标签: php


    【解决方案1】:

    您必须向 SMTP 发送纯密码。哈希函数是单向的,它们只是“混淆”输入,因此 SMTP 无法使用它对您进行身份验证。

    您可以加密密码,可能是 AES,然后存储密文和秘密(可能作为环境变量),然后将解码后的密码传递给邮件程序。

    例子:

    <?php
    $secret_key = 'supersecret key';
    $password = 'somepass';
    
    // encrypt
    // calculate cipher, and store somewhere
    $cipher = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secret_key, $password, MCRYPT_MODE_ECB);
    
    // use the cipher
    $mail->Username = $USR_EMAIL; // SMTP username
    $mail->Password = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secret_key, $cipher, MCRYPT_MODE_ECB); // SMTP password
    ?>
    

    【讨论】:

    • 但是如果我没记错的话,我的密码会再次暴露在 php 文档中吗?
    • 首先计算密码(可能使用cli sn-p),并将密码作为字符串存储在PHP代码中,并将密码设置为服务器环境。变量,可以通过getenv('MY_SECRET'); 检索到:php.net/manual/en/function.getenv.php
    • @winya,好吧,我知道这是旧帖子,但是如果您阅读了这篇文章,如果我错了,请纠正我。如果我试图向有权访问此文件的其他人(例如设计师等)隐藏此密码,即使我将字符串存储在环境中。变量或在 public_html 目录之外的文件中(下面的其他人没有 ftp 访问权限),他们仍然可以通过回显它来简单地获得该变量 $password 的输出。我对吗?谢谢
    • @user926652,你解决了吗?我也有点担心以开放格式存储密码。不知道为什么没人关心它
    【解决方案2】:

    不幸的是,这不是 phpMailer 的支持问题,而是您的 SMTP 设置问题。在大多数情况下,您的 SMTP 服务器不知道如何处理密码散列 - 它需要未散列的密码,以便它可以检查自己的密码表,无论如何这些密码表不太可能存储在未加盐的 MD5 中。

    您可以(如果您的 SMTP 服务器支持)通过安全连接发送密码(有关此问题的讨论,请参阅 PHPMailer: SMTP Error: Could not connect to SMTP host)。但是,您仍然需要在未加密的情况下保存密码。根据您的托管程序包,一种替代方法是设置 SMTP,使其不通过用户名和密码对您进行身份验证——例如,通过使用正确配置的本地 sendmail 实例。

    【讨论】:

    • 非常感谢您向我解释所有这些!
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2010-12-02
    • 2023-03-30
    相关资源
    最近更新 更多