Допустимые адреса электронной почты-XSS и SQL Injection

поскольку существует так много допустимых символов для адресов электронной почты, есть ли какие-либо действительный адреса электронной почты, которые сами по себе могут быть атаками 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 1=1--@gmail.com, за исключением того, что пробелы не допускаются. Все SQL-инъекции требуют пробелов?

2 ответов


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

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

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


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

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