предотвращение внедрения заголовка почты php - PullRequest
0 голосов
/ 07 января 2010

На странице справки по php для функции mail был пользовательский комментарий, в котором говорилось: «Позаботьтесь, чтобы предотвратить внедрение заголовка».

В моем приложении я использую функцию mail, и единственным пользовательским вводом, который я использую в качестве параметра функции, является адрес электронной почты.

Я делаю предварительную проверку адреса электронной почты, используя регулярное выражение ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$.

Это также предотвратит инъекцию заголовка?

Спасибо
JRH

Ответы [ 2 ]

3 голосов
/ 07 января 2010

Кто-то захочет ввести что-то вроде этого:

user_address@domain.comCC: spam_address1@domain.com, spam_address2@domain.com, spam_address3@domain.com

Вы не разрешаете \ r \ n , который необходим для определения новой информации заголовка.Так что ваше приложение безопасно.

0 голосов
/ 07 января 2010

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

Вот что я использую:

$email = preg_replace(array("/\r/i","/\n/i", "/%0a/i", "/%0d/i", "/Content-Type:/i", "/bcc:/i", "/to:/i", "/cc:/i", "/Content\-Transfer\-Encoding\:/i", "/Mime\-Version\:/i" ), "", $email); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...