Санитарная обработка пользовательского ввода, который позже будет отправлен по электронной почте - о чем мне беспокоиться? - PullRequest
2 голосов
/ 01 мая 2010

Я стажируюсь в неправительственной организации в Индии (Сева Мандир, http://sevamandir.org) и пытаюсь починить их неработающую коробку «подписаться на рассылку». Потому что персонал не очень искушенный, а наш веб-хостинг - отлично, я решил отправить соответствующие данные сотруднику публикации по почте () вместо того, чтобы хранить его в базе данных MySQL.

Я знаю, что лучше всего воспринимать ввод пользователя как вредоносный, и я искал на форумах SO сообщения, имеющие отношение к экранированию пользовательских данных для отправки в почтовом сообщении. Я знаю, что данные должны быть экранированы; что меня должно волновать, и как лучше всего очистить входные данные перед отправкой по электронной почте?

Также обратите внимание, что веб-хост org все еще использует PHP 4, поэтому я не могу просто использовать filter_var для строк. Я работаю с ними, чтобы решить проблему , но сейчас мне придется использовать регулярные выражения или strip_tags или какой-то другой метод.

Форма потока:
1. Пользователь вводит электронную почту на главной странице и нажимает кнопку Отправить
2. Пользователь вводит имя, адрес, дополнительную информацию на второй странице (плохое удобство использования, я знаю, но мой начальник попросил меня об этом) и нажимает «Отправить»
3. Соберите данные через $ _POST и отправьте по электронной почте в редактор публикаций (и, возможно, отправьте подтверждение подписчику).

Я собираюсь очистить электронную почту на шаге 2 и другие данные на шаге 3. Я ценю вашу помощь,
Kevin

Ответы [ 3 ]

2 голосов
/ 01 мая 2010

Если вы используете введенный пользователем адрес электронной почты для отправки подтверждения, убедитесь, что они указали только один адрес электронной почты. Спамер может пробивать разрывы строк и, следовательно, произвольно длинные Bcc: записи, в заголовки ваших сообщений, если вы не остерегаетесь.

См. впрыск электронной почты .

2 голосов
/ 01 мая 2010

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

1 голос
/ 01 мая 2010

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

В основном, если вы снимаете \n и \r с полей $name, $from, $to и $subject, вы должны быть в полной безопасности, но всегда лучше использовать подход белого списка.

...