Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Внедрение E-mail заголовка

Внедрение SQL является менее известным аналогом внедрения Email заголовка, которое крадёт данные форм при их отправке на электронную почту. Атакующий может использовать эту методику для рассылки спама через ваш почтовый сервер. Любая форма, которая создаёт почтовые заголовки, используя введённые в форму данные, уязвима для данного типа атак.

Давайте рассмотрим стандартную контактную форму, которую можно встретить на многих сайтах. Обычно, такая форма отсылает сообщение на жёстко определённый адрес и, следовательно, не подвержена уязвимости, через которую можно рассылать спам. Но это только на первый взгляд.

Тем не менее, большинство таких форм также позволяют пользователю указать собственную тему для почтового сообщения (а также свой адрес, текст сообщения, иногда и что-нибудь ещё). Поле темы используется для генерации заголовка Subject для почтового сообщения.

Если этот заголовок не экранируется во время генерации почтового сообщения, атакующий может отправить что-нибудь вида hello\ncc:spamvictim@example.com (где \n является символом перевода строки). Это может привести к созданию следующих заголовков:

To: hardcoded@example.com
Subject: hello
cc: spamvictim@example.com

Аналогично внедрению SQL, если мы доверяем пользователю вводить строку для темы письма, мы позволяем ему создавать вредоносный набор заголовков и использовать нашу контактную форму для рассылки спама.

Решение

Мы можем предотвратить такую атаку также как мы предотвращаем внедрение SQL — всегда экранируйте или проверяйте данные, которые вводит пользователь.

Встроенные в Django функции отправки электронной почты (django.core.mail) просто не позволяют использовать символы перевода строки в любом из полей, используемых для создания заголовков (from, to и subject). Если вы попытаетесь использовать django.core.mail.send_mail() совместно с полем subject, которое содержит символ перевода строки, то Django вызовет исключение BadHeaderError.

Если вы не используете встроенные в Django функции для отправки электронной почты, вам потребуется проверять заголовки на наличие там символа перевода строки. При их наличии надо будет выдавать ошибку или тихо удалять их оттуда. Рекомендуем посмотреть на класс SafeMIMEText в django.core.mail.


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
1049 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID