Хабр Курсы для всех
РЕКЛАМА
 Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать! 
Представьте, что там 1000 адресов через запятую, а ваш фреймворк в ответ на такие адреса рассылает письмо на все
Регулярка гарантирует, что этот адрес не эксплуатирует какие-то уязвимости вашего способа слать письма.
Отправка письма с подтверждением — потеря определенной доли посетителей.
In computer science, data validation is the process of ensuring that a program operates on clean, correct and useful data. It uses routines, often called «validation rules» or «check routines», that check for correctness, meaningfulness, and security of data that are input to the system.
$ telnet smtp.yandex.ru 2025
EHLO
AUTH LOGIN
ВАШ_ЛОГИН_ПОЧТЫ_В_BASE_64
ВАШ_ПАРОЛЬ_ПОЧТЫ_В_BASE_64
MAIL FROM: my-site-email@ya.ru
RCPT TO: new_user@example.com
new_user@example.com можно определить на этом этапе: если сервер ответит 250 2.1.5 Recipient address syntax Ok; rcpt=... то скорее всего адрес валидный. Само письмо при этом не обязательно отправлять.qwiufaisjdbvaadsjghb@gmail.com
Да ладно вам! С этой хренью ни один почтовый демон работать не станет

невозможность потратить ваши деньги
        list(,$maildomain) = explode('@', strtolower($email), 2);
        $validEmail = $maindomain AND checkdnsrr($maildomain, 'SOA');
Вкупе с полем для повторного ввода адреса два этих способа позволяют отсеять львиную долю ошибок, связанных со вводом некорректных данных.
запрос в DNS на существование домена
If an empty list of MXs is returned,
the address is treated as if it was associated with an implicit MX
RR, with a preference of 0, pointing to that host.
The lookup first attempts to locate an MX record associated with the
name. If a CNAME record is found, the resulting name is processed as
if it were the initial name. If a non-existent domain error is
returned, this situation MUST be reported as an error. If a
temporary error is returned, the message MUST be queued and retried
later (see Section 4.5.4.1). If an empty list of MXs is returned,
the address is treated as if it was associated with an implicit MX
RR, with a preference of 0, pointing to that host. If MX records are
present, but none of them are usable, or the implicit MX is unusable,
this situation MUST be reported as an error.
/.+@.+\..+/i
через проверку на наличие точки, собаки, и содержание более двух символов между ними; и этого считаю достаточно.
любая передаваемая от пользователя и сохраняемая информация может содержать уязвимости
$db->query('select * from users where name = ' . $pdo->quote($_GET['name']));
$db->query(sprintf('select * from users where id = %d', $_GET['id']));
echo '<h1>Hi ' . htmlspecialchars($_GET['name'], ENT_QUOTES, 'utf-8') . '</h1>';
Бред, у них были бы XSS и SQL дырки.
любая передаваемая от пользователя и сохраняемая информация может содержать уязвимости
И если пользователь передает sssss");delete from table users where (email=", то ЭТО БУДЕТ верным запросом с точки зрения БД.
И да, кстати ваш код тоже говно :-)
s');delete from table users where 1=1 --, то это его право.
s');delete from table users where 1=1 --@a.b, то может теперь так можно.
Сначала вы пишите, что вам плевать, что у вас в базе вместо email будет произвольная строка, потом говорите, что виноват в этом будет говнокодер.
Но никто не будет делать все автомобили бронированными с расчетом на то, что в них могут пульнуть из гранотомета
Вообще то в любой нормальной системе есть правила.
И если человек вводит вместо своего e-mail опасный код
И если этот опасный код сотрет нам базу, то этот человек станет преступником.
Отсюда все эти придирания к формулировкам
т.е. вы утверждаете, что форматы умеют разговаривать?
Так что нет пользователь не имеет права вводить что угодно на моем сайте.
$stmt = $pdo->prepare('select * from users where name = ' . $_GET['name']);
$stmt->execute();
Оно гораздо более защищено от инъекций.
Золотой серединой вижу проверку на корректность домена и на наличие MX-записей.
If an empty list of MXs is returned,
the address is treated as if it was associated with an implicit MX
RR, with a preference of 0, pointing to that host.
А если чувствуете, что способны на большее — добавьте проверку на точку
Это требуется для того, чтобы удостовериться, что я действительно имею доступ к почтовому ящику, на который регистрируюсь.
Прекратите проверять Email с помощью регулярных выражений!