Действительные Адреса Электронной Почты - Внедрение XSS и SQL


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

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

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

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

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

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

Author: Joel Coehoorn, 2010-05-27

2 answers

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

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

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

 12
Author: Ryan Brunner, 2010-05-27 18:41:32
/^[a-z0-9.-_+]@[a-z0-9.-]$/i

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

 -5
Author: Toby, 2010-05-27 18:28:26