У техники внедрения SQL есть менее известный "родственник" - внедрение заголовков электронной почты. Данная разновидность атак может использоваться злоумышленником для рассылки спама через ваш почтовый сервер.
Рассмотрим типичную форму для ввода контактной информации, которая встречается на многих сайтах. Обычно при ее обработке посылается сообщение на фиксированный адрес, так что вроде бы никакой опасности спама нет. Однако в большинстве таких форм пользователю предоставляется возможность ввести еще и тему письма и иногда еще и какие нибудь поля.
Если заголовок не экранируется, то злоумышленник может вписать в него что то вроде
theme\ncc: spam@mail.com
где "\n" - символ перевода строки.
Тогда в письме появятся такие заголовки
To: your@mail.com
Subject: theme
cc: spam@mail.com
Так же, как и при SQL-инъекциях - если мы доверяем теме, которую ввел пользователь, то даем возможность сконструировать несанкционированные заголовки, и рассылать спам используя нашу форму.
Уязвимостью является любая форма, при обработке которой на основе полученных данных конструируются заголовки электронной почты. Для предотвращения такой атаки применяются те же принципы что и при SQL-инъекциях: всегда экранировать или проверять полученные от пользователя данные.
Решение: Либо возбуждайте исключение при обнаружении новых заголовках, либо вырезайте эти символы.
Примечание: Если вы используете Django, то обратите внимание на средства работы с электронной почтой (в пакете django.core.mail), которые просто не допускают символов новой строки в полях, предназначенных для заголовков.