Email Injection
Собственно injection - это когда адреса получателей подставляются в поля формы так, чтобы попасть в заголовки письма. Исходя из структуры письма можно сделать простой вывод: используя переводы строк, можно добавить любое количество новых заголовоков, в том числе - и адресов получателей. То есть, если мы напишем в своем коде
$subject=$_POST['subject'];
а в этом поле будет написано сто адресов получателей, разделенных переводами строк, то письмо отправится сотне жертв.
Отсюда следует, что и защита форм обратной связи такая же простая. Самое надёжное - помещать введенную пользователем информацию только в текст письма, и никуда больше.
- Не предоставлять открытую трансляцию писем (SMTP-сервер, сконфигурированный таким образом, что любому в интернете можно отправлять почту через него).
- Открывать SMTP порт только если есть в этом необходимость.
- Злоумышленник может использовать формат MIME, чтобы добавить дополнительную информацию к сообщению отправки, например, новый список получателей или полностью другое тело сообщения.
- Ввод шестнадцатеричных символов в поле формы может добавить возврат каретки и пробелы. Таким образом, следующая строка вводится в поле формы, такие как "Ваш E-mail": “[email protected]%0ACc:[email protected]%0ABcc:[email protected],[email protected]”. Что приведет к отправке скрытой копии письма к [email protected] и скрытых копий на [email protected] и [email protected].