Учитывая, я анализирую пользовательский ввод, который, как предполагается, адрес электронной почты, в MailAdress класс:Возможно ли XSS через класс MailAddress?
var mailString = Request.QueryString["mail"];
var mail = new MailAddress(mailString);
Есть ли возможность оставить на кросс-сайт-сценариев атаки, если I вывести объект MailAddress позже в любом случае? Например через буквальное управление в WebForms:
litMessage.Text = "Your mail address is " + mail.Address;
Нужно ли дезинфицировать outpout хотя я убедился, что адрес является действительным адресом электронной почты путем разбора строки?
Из чего я могу собрать RFC для почтовых адресов, довольно сложно, поэтому я не уверен, что скрипты межсайтового сайта могут быть скрыты в почтовом адресе, который считается действительным .NET.
EDIT:
MSDN говорит, что >
и <
скобки допускаются в адрес электронной почты:
Параметр адрес может содержать отображаемое имя и связанный с ним адрес электронной почты, если вы заключите адрес в угловых скобках. Например: «Том Смит <[email protected]>»
Таким образом, вопрос остается, если этого достаточно для атаки XSS и/или если MailMessage
класс ничего не делает, чтобы избежать опасных частей.
Какой смысл использовать дополнительный фильтр регулярных выражений, если класс MailAddress уже гарантирует, что принимаются только допустимые строки? Мой вопрос в том, могут ли действительные адреса электронной почты содержать атаки XSS, которые могли бы пропустить проверку. Конечно, вы правы, когда говорите, что никогда не стоит отказываться от html-символов при создании вывода. Однако я хочу знать, возможна ли такая атака, если вы используете объект MailMessage. Его никогда не плохой идеей, чтобы знать, какие варианты может иметь атакующий. – magnattic
Вы согласны с тем, что при использовании класса MailAddress вам не нужно добавлять фильтр регулярных выражений. Я включил его здесь для полноты разработки дезинфицирующего средства. Тем не менее, в условиях высокой безопасности нам не нравится доверять исходный/закрытый исходный код, потому что мы не можем просмотреть его для уязвимостей. По этой причине мы пишем наши собственные. Что касается получения атаки через MailMessage, я не знаю о каких-либо атаках там, но это не значит, что это невозможно, особенно если вы используете класс так, как его авторы не ожидали. –
Если у кого-то есть атака, которая работает против 'MailAddress', они, вероятно, не откажутся, потому что это стоит * много денег в метро. Я только что слышал о продаже Java-7 за 50 000 долларов. После раскрытия они бесполезны. –