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.