Intereting Posts
отрицательная группа с выраженным выражением Что такое эквивалент Python PHP var_dump ()? $ _SERVER с сообщением HTTP GET и CLI PHP: как увеличить значение в строке таблицы для подсчета просмотров и ограничить количество на один IP-адрес База данных запросов через Javascript / PHP Chart.js – Получение данных из базы данных с использованием mysql и php Восклицательный знак перед переменным – требуется разъяснение php / mysql предотвращает дублирование записей по нескольким столбцам Mysql MySQL или PHP Преобразование строк в два столбца динамически Журнальный журнал запросов Laravel Eloquent php require_once возврат в текущий рабочий каталог Повторение группы захвата против захвата повторяющейся группы с вложенным шаблоном Каков наиболее безопасный способ для загрузки файла? Добавить запятые в качестве разделителя тысяч и точки с плавающей точкой в ​​php Как предотвратить множественный вход пользователя с тем же именем пользователя и паролем?

Есть ли какая-либо инъекционная уязвимость в теле письма?

AFAIK существует только уязвимость в HEADERS электронной почты при правильном использовании пользовательских данных?

Я использую функцию ниже для дезинфекции своих данных, однако у меня есть некоторые поля textarea на странице, и поэтому они могут содержать разрывы строк. Поэтому было интересно, не будут ли эти данные пользователя помещаться в тело письма, может ли это не беспокоиться о том, чтобы быть продезинфицированным – за исключением удаления html, конечно?

Вот функция:

function is_injected($str) { $injections = array('(\n+)', '(\r+)', '(\t+)', '(%0A+)', '(%0D+)', '(%08+)', '(%09+)' ); $inject = join('|', $injections); $inject = "/$inject/i"; if (preg_match($inject,$str)) { return true; } else { return false; } } 

В качестве побочного примечания, удивленный тем, что в настоящее время не существует метки для инъекций электронной почты / электронной почты.

    В текстовом тексте есть возможная инъекция, если вы говорите собственный SMTP на почтовый сервер.

    Один . сам по себе завершает текущее тело в SMTP, поэтому теоретически вы могли бы вводить пользователя таким образом:

     some body text . MAIL FROM: <...> RCPT TO: <...> DATA Subject: here's some spam here's a new body 

    и SMTP-сервер может пропускать второе сообщение.

    Некоторые SMTP-серверы могут быть настроены таким образом, чтобы предотвратить это, не разрешая конвейеру SMTP-команд (т. Е. Требуя, чтобы клиент прочитал ответ, прежде чем разрешить следующую команду).

    Если письмо электронной почты является почтой электронной почты, и особенно если получатель будет просматривать его в веб-электронной почте (Hotmail, Gmail, Yahoo и т. Д.) Или почтовом клиенте, который поддерживает HTML-представления, тогда инъекция в тело определенно проблема – XSS может произойти где угодно.

    Также может произойти динамическое изменение MIME. Когда мы отправляем почту, мы обычно определяем Content-type в нашем скрипте, например:

     Content-type: text/html;charset=UTF-8 

    Улов – заголовок «Content-Type» может быть переопределен как multipart / mixed (или multipart / alternative или multipart / related), хотя он был ранее определен.

    Пример. Представьте, что кто-то вводит это в поле тела электронной почты на вашей странице контакта:

     haxor@attack.com%0AContent-Type:multipart/mixed;%20boundary=frog;%0A--frog%0AContent-Type:text/html%0A%0AMy%20Message.%0A--frog-- 

    Что это будет делать – когда пользователь получит это сообщение, он увидит сообщение спамера (которое ограничено «-frog»), в соответствии с mime multipart / mixed specification. Исходное сообщение «контакт», которое разработчик, возможно, жестко закодировано, также будет внутри электронной почты, но не будет отображаться получателю.

    Таким образом спамеры могут отправлять спам из других доменов. Особенно если это что-то вроде: «отправьте его своему другу». форма.

    Кроме того, при фильтрации заголовков я использую (немного короче, я думаю, чем то, что у вас есть):

     preg_replace( '/\s+/', "", $text ) 

    Вы также можете ввести границу MIME в многочастные сообщения, если граница не рандомизирована. Таким образом, вы можете вводить произвольный контент (например, приложения с вредоносным ПО).

    Пример (не связанный напрямую с электронной почтой, но все еще): https://bugzilla.mozilla.org/show_bug.cgi?id=600464