Предположим, мы отправляем тривиальный отзыв и собираемся сделать эти поля динамическими:
- имя отправителя
- адрес электронной почты отправителя
- тема
- тело сообщения
достаточно ли этого кода PHP, чтобы защитить нас от всех видов почтовых инъекций?
//sanitizing email address
if ($email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
//encoding subj according to RFC and thus protecting it from all kinds of injections
$subject = "=?UTF-8?B?".base64_encode($_POST['subject'])."?=";
//encoding name for same reasons, and using sanitized email
$from = "From: =?UTF-8?B?".base64_encode($_POST['name'])."?= <$email>\r\n";
//protecting body as it mentioned in http://php.net/mail
$message = str_replace("\n.", "\n .", $_POST['text']);
mail('[email protected]',$subject,$message,$from);
}
на данный момент я играю с такими именами, как "[email protected], [email protected],"
, но кажется, что все доступные почтовые клиенты обрабатывают его правильно