Вопрос

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

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

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

Будет ли это также предотвращать внедрение заголовка?

Спасибо,
джрх

Это было полезно?

Решение

Кто-то хотел бы ввести что-то вроде этого:

адрес_пользователя@domain.com
СС:спам_адрес1@домен.com, спам_адрес2@домен.com, спам_адрес3@домен.com

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

Другие советы

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

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

$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); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top