2013-07-06 6 views
2

Я просматривал несколько сообщений, чтобы увидеть способы защиты от различных форм атаки «инъекции».Можете ли вы использовать PHP Explode() для защиты от инъекций?

What's the best method for sanitizing user input with PHP? - это УДИВИТЕЛЬНОЕ сообщение и очень полезно для баз данных, однако одна вещь, которую я хотел бы сделать, - защищать от моего почтового сервера, который используется кем-то «регистрирующим», и использовать строку адресатов с разделителями-запятыми для спама людей , Это тема, которая, похоже, не рассматривается часто.

Да, Captcha (или эквивалент) на месте, это больше подходит для неприятного пользователя, который разрезает и вставляет в поле электронной почты длинный список значений, разделенных запятой.

Я надеялся, что взрыва, а затем только принятие нулевого элемента в массиве будет лучшим способом бросить путь остальным, однако, если у кого-то есть другие идеи или подходы, то очень рад их прочесть.

$emails_passed = explode(",", $_POST['email_field']); // could also use $_GET 
$email_to = $emails_passed[0]; 
+0

html5 включает в себя поле электронной почты, который обрабатывает его для вас. http://www.w3schools.com/html/html5_form_input_types.asp – DevZer0

+0

Спасибо @ DevZer0 Мне было непонятно - извините. Мне нравится опция HTML5 и HTML5 обрабатывает мои страницы, однако, к сожалению, не все браузеры все еще хорошо справляются с этим - я не могу ждать. –

ответ

3

Ну да, вы могли бы, но это неразумно делать. Простая проверка, если дано действительное электронное письмо, см. php validation, first example для получения некоторой базовой проверки электронной почты. Действующее письмо не содержит запятой.

Так что если у него есть запятая, это недействительно, поэтому вы должны сказать пользователю, пожалуйста, укажите действительное письмо. Подумайте, что решает проблему в beter-режиме, а затем использует explode

Вышеупомянутая история учитывается только в том случае, если вы разрешаете одиночные электронные письма ([email protected]), подобные Gumbo, указанным в комментариях the specs, позволяют запятую в письме.

Потому что ваш вопрос был связан с тем, чтобы люди не получали несколько электронных писем, чтобы вы «спамели» их. Я по-прежнему рекомендую проверить электронную почту и проверить.

Надежда дополнительная информация, благодаря Gumbo помогает

+0

Sanitizing - это акт исправления неверного ввода пользователем. Это должно произойти только тогда, когда пользователь не может быть задан. Если пользователь может попросить, потому что он только что отправил форму и ждет подтверждения подтверждения, столкнется с ним со списком ошибок и не примет форму. – Sven

+2

-1 Вы ошибаетесь: '' foo, bar "@ example.com' является действительным адресом электронной почты. – Gumbo

+0

Поскольку я понимаю, что это не действительный адрес электронной почты, а комбинация электронных писем ([email protected] и [email protected]). Также, в случае вопроса, взрыв не будет работать. – MKroeders