Вопрос по xss, sql-injection, php, email-validation – Допустимые адреса электронной почты - XSS и SQL-инъекция

9

Поскольку в адресах электронной почты так много допустимых символов, есть лидействительный адреса электронной почты, которые сами по себе могут быть атаками XSS или SQL-инъекциями? Я не мог найти никакой информации об этом в Интернете.

Локальная часть адреса электронной почты может использовать любой из следующих символов ASCII:

Прописные и строчные английские буквы (a – z, A – Z)Цифры от 0 до 9Персонажи ! # $% & '* + - / =? ^ _ `{| } ~Символ . (точка, точка, точка) при условии, что это не последний символ, а также при условии, что он не появляется два или более раз подряд (например, John..Doe @ example.com).

http://en.wikipedia.org/wiki/E-mail_address#RFC_specification

Я не спрашиваю, как предотвратить эти атаки (Я уже использую параметризованные запросы и экранирующий / HTML-очиститель), это скорее подтверждение концепции.

Первое, что пришло в голову, было'OR [email protected]за исключением того, что пробелы не допускаются. Все ли SQL-инъекции требуют пробелов?

Ваш Ответ

2   ответа
12

Пробелы разрешены, если они заключены в кавычки, поэтому"'OR 1=1--"@gmail.com является действительным адресом электронной почты. Кроме того, это, вероятно, меньше беспокоит, но технически говоря, это оба действительные адреса электронной почты:

' BAD SQL STUFF -- <[email protected]>
[email protected] (' BAD SQL STUFF --)

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

Можешь использоватьisemail.info чтобы проверить любой адрес электронной почты, который вам нравится, или просто протестировать с помощью фильтра на вводимые адреса электронной почты с помощью некоторой функции php, такой как фильтр проверки электронной почты Основываясь на isemail.info, первый адрес недействителен, а второй адрес «Адрес действителен в сообщении, но не может быть использован без изменений для конверта» Kzqai
-5
/^[a-z0-9.-_+]@[a-z0-9.-]$/i

Кстати. это только для проверки, если текст не упакован с инъекциями xss / sql и т. д. - это не способ проверить адрес электронной почты. Toby

Похожие вопросы