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].