Очистка данных PHP в электронных письмах

#php #email #sanitization

#php #Адрес электронной почты #очистка

Вопрос:

Мои PHP-скрипты получают информацию (из формы, отправленной пользователем) и отправляют ее (почти) сразу в виде электронного письма. Какой тип очистки данных я должен выполнить для данных?

Я хочу точно знать, какую функцию PHP использовать для очистки данных.

Комментарии:

1. для начала неплохо использовать htmlentities, также рассмотрите возможность использования striptags, чтобы разрешать только безвредные теги

2. Несколько быстрых вопросов по этому вопросу, каков источник данных? В какой кодировке закодированы получаемые данные? В какой кодировке вы отправляете электронное письмо?

3. Форма отправляется пользователем, который не уверен, в какой кодировке (как я могу узнать?)

4. @Ibu почему? Оба совершенно не нужны для электронной почты (по крайней мере, с точки зрения безопасности).

Ответ №1:

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

http://www.damonkohler.com/2008/12/email-injection.html

Комментарии:

1. Вероятно, это сэкономило бы вам некоторое время.

Ответ №2:

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

Комментарии:

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

2. Ссылки, предложенные datasage и Alix, полезны. Я ответил на ваш вопрос: «Я хочу точно знать, какую функцию PHP использовать для очистки данных».

3. Можете ли вы привести мне пример, скажем, проверки $message (которая содержит сообщение пользователя), чтобы убедиться, что нет почтовых инъекций. (Возможно, нужно просто показать мне, какой именно метод filter_var() использовать?)

4. Сообщение содержит текст. Итак, вы могли бы попробовать использовать filter_var($message, FILTER_SANITIZE_STRING) и проверить результат. Я предлагаю вам прочитать ссылки, чтобы понять, каковы возможные уязвимости, и проверить их.

Ответ №3:

Вы захотите: