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