Допустимые адреса электронной почты - XSS и SQL-инъекция - PullRequest
9 голосов
/ 27 мая 2010

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

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

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

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

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

Первое, что пришло в голову, было 'OR 1=1--@gmail.com, за исключением того, что пробелы не допускаются. Все ли SQL-инъекции требуют пробелов?

Ответы [ 2 ]

12 голосов
/ 27 мая 2010

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

' BAD SQL STUFF -- <fake@ryanbrunner.com>
fake@ryanbrunner.com (' BAD SQL STUFF --)

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

0 голосов
/ 27 мая 2010
/^[a-z0-9.-_+]@[a-z0-9.-]$/i

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

...