1

私は次のコードを使用しています...

      $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スクリプトはありますか?なんらかの暗号化を行わずに、どこにでも電子メールのパスワードを保存できるのではないかと恐れています。

4

2 に答える 2

6

プレーンパスワードを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
?>
于 2012-06-20T11:59:09.513 に答える
3

残念ながら、これはphpMailerでのサポートの問題ではなく、SMTPの設定の問題です。ほとんどの場合、SMTPサーバーはパスワードハッシュをどう処理するかを知りません。ハッシュされていないパスワードが必要です。これにより、SMTPサーバーは、無塩のMD5に保存される可能性が低い独自のパスワードテーブルと照合できます。

(SMTPサーバーがサポートしている場合)安全な接続を介してパスワードを送信できます(これに関する説明については、 PHPMailer:SMTPエラー:SMTPホストに接続できませんでした)。ただし、暗号化せずにパスワードを保存しておく必要があります。これに代わる方法の1つは、ホスティングパッケージに応じて、ユーザー名とパスワードで認証されないようにSMTPを設定することです。たとえば、適切に構成されたローカルsendmailインスタンスを使用します。

于 2012-06-20T11:58:07.377 に答える