Как предотвратить email инъекцию в PHP формах
В настоящее время на многих сайтах уже нет адресов электронной почты администраторов, вместо этого используется форма контактов или обратной связи. Вместо того, чтобы собирать адреса электронной почты с веб-сайтов, спамеры обратились к использованию сценариев форм обратной связи для рассылки спама. Если вы пишете собственный сценарий для формы обратной связи, очень важно написать его таким образом, чтобы предотвратить использование сценария для рассылки спама. Как работает угон форм для отправки почты? mail( “yourname@example.com”, “Feedback Form Results”, $message, “From: $email” ); Приведенный выше код отправляет сообщение предположительно по адресу веб-мастера yourname@example.com. В качестве адреса отправителя передается значение, которое содержится в переменной $email, полученной из веб-формы. Если в сценарии не предпринимается никаких действий для проверки переменной $email перед вызовом функции mail(), это создает возможность для спамера вводить дополнительные заголовки в электронное сообщение, добавив следующие строки в переменную $email. some-email-address@example.com PHP функция mail() будет тупо вставлять эти строки в заголовок электронного сообщения и передавать почтовому транспортному агенту, который в свою очередь доставит почту всем, кто указан в списке. Так угоняют сценарии для рассылки спама. Как избежать email инъекции и угона сценариев форм для отправки почты Существует много способов определения попыток вставки почтовых заголовков в сценарии. PHP сценарий, сгенерированный с помощью Feedback Form Script Wizard на сайте thesitewizard.com, выглядит следующим образом: if ( preg_match( “/[ [... direct user to an error page and quit ...] } Переменная $name содержит имя посетителя, а $email запоминает адрес электронной почты. Функция preg_match() вызывается для выяснения, включают ли эти две переменные символы новой строки. Символы новой строки как возврат каретки(” Заключение Можно еще почитать вот это: |


