пароль md5 с phpMailer

Я использую следующий код ...

      $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

Я хотел бы задать несколько простых вопросов .. Есть ли способ передать в phpMailer пароль, сохраненный в формате md5 в базе данных? Есть ли другой тип хеширования, который поддерживает phpMailer? Есть ли скрипт php для отправки электронной почты, который поддерживает хешированные пароли? Я в ужасе от мысли, что у меня будет пароль электронной почты, хранящийся в любом месте без какого-либо шифрования.

Ответы на вопрос(2)

К сожалению, это не вопрос поддержки в phpMailer, а вашей настройки SMTP. В большинстве случаев ваш SMTP-сервер не знает, что делать с хэшем пароля - ему нужен не хэшированный пароль, чтобы он мог сверяться со своими собственными таблицами паролей, которые в любом случае вряд ли будут храниться в несоленном MD5.

Вы можете (если ваш SMTP-сервер поддерживает это) отправить пароль через безопасное соединение (см.PHPMailer: ошибка SMTP: не удалось подключиться к узлу SMTP для обсуждения по этому поводу). Однако вам все равно нужно хранить пароль без шифрования. Альтернативой этому, в зависимости от вашего хостинг-пакета, является настройка SMTP таким образом, чтобы он не аутентифицировал вас по имени пользователя и паролю - например, с помощью правильно настроенного локального экземпляра sendmail.

 user92665220 июн. 2012 г., 14:14
Большое вам спасибо за объяснение мне все это!
Решение Вопроса

Вы должны отправить простой пароль для SMTP. Хеш-функции являются односторонними, они просто «запутывают» вход, поэтому SMTP не может аутентифицировать вас с ним.

Вы можете зашифровать пароль, возможно, AES, и вы сохраните зашифрованный текст и секрет (возможно, как переменную env.) И передадите декодированный проход почтовой программе.

Пример:

<?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
?>
 user92665220 июн. 2012 г., 14:13
Но опять же мой пароль будет показан в документе php, если я правильно понял?
 21 июн. 2012 г., 13:49
Сначала вычислите шифр (возможно, с фрагментом cli), сохраните шифр в коде PHP в виде строки и установите секрет в качестве env сервера. переменная, которая может быть полученаgetenv('MY_SECRET');  увидеть:php.net/manual/en/function.getenv.php
 23 сент. 2014 г., 01:55
@winya, ну, я знаю, что это старый пост, но если ты читаешь это, можешь поправить меня, если я ошибаюсь. Если я пытаюсь скрыть этот пароль от других людей, которые имеют доступ к этим файлам (например, дизайнеры и т. Д.), Даже если я храню строку в env. переменной или в файле за пределами директивы public_html (ниже, где другие не имеют доступа ftp), они все равно могут просто получить вывод этой переменной $ password, просто повторив ее. Я прав? Спасибо
 23 сент. 2014 г., 02:14
@ user926652, ты решил это? Я также немного беспокоюсь о хранении паролей в открытых форматах. Не уверен, почему никто не беспокоится об этом

Ваш ответ на вопрос