Действительные адреса электронной почты - XSS и SQL-инъекции

Поскольку существует так много допустимых символов для адресов электронной почты, существуют ли какие-либо действительные адреса электронной почты, которые сами по себе могут быть 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-инъекции требуют пробелов?


person Lotus Notes    schedule 27.05.2010    source источник


Ответы (2)


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

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

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

person Ryan Brunner    schedule 27.05.2010
comment
Можно использовать isemail.info, чтобы проверить любой адрес электронной почты, который вам нравится, или просто протестировать с помощью фильтра для вводимых адресов электронной почты через некоторую функцию php, такую ​​как фильтр проверки электронной почты. На основе isemail.info первый адрес недействителен, а второй адрес является действительным в сообщении, но не может использоваться без изменений для конверта. - person Kzqai; 27.04.2012

/^[a-z0-9.-_+]@[a-z0-9.-]$/i

Я думаю, что это соответствует 99,9999% всех адресов электронной почты;)

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