Вопрос по php – пароль md5 с phpMailer

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

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

Ваш Ответ

2   ответа
4

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

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

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

Большое вам спасибо за объяснение мне все это! user926652

Похожие вопросы