Как правильно экранировать заголовок электронной почты в php - PullRequest
0 голосов
/ 01 июля 2018

У меня следующий php код

<?php 
$from = $_POST['email'];
$to = "myaddr@myserver.com";
$subject = "new message";
$message = "new message from ". $_POST['email'] ." >>> " .  $_POST['message'];
$headers = "From:" . $from;
mail($to,$subject,$message, $headers);

?>

Я только что запустил php, так что это результат копирования. Я подозреваю, что это уязвимо, потому что, возможно, можно просто вставить символ новой строки в поле адреса электронной почты и переписать для меня весь заголовок почты.

Как мне правильно избежать этого? И пока ты в этом - видишь ли ты другие ошибки / вульны?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Хорошо, вы должны убедиться, что почтовый сервер, к которому подключается ваш скрипт, должным образом защищен. Если сценарий сначала подключается к удаленному узлу smtp, то он должен обеспечить защиту удаленного узла smtp.

Обычно почтовые серверы настроены таким образом, что отправка электронной почты происходит по безопасному ssl-зашифрованному каналу.

Защищенные почтовые серверы принимают отправку SMTP-почты через порты 465 и 587. Эти порты являются безопасными SMTP-портами и поддерживаются большинством почтовых серверов. В чем разница между портами 465 и 587?

0 голосов
/ 01 июля 2018

Добавить подтверждение по электронной почте:

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    //send mail after validation
    mail($to,$subject,$message, $headers);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...