考虑到我将用户输入(应该是电子邮件地址)解析到MailAdress类中:
var mailString = Request.QueryString["mail"];
var mail = new MailAddress(mailString);
如果我稍后以任何方式输出 MailAddress 对象,是否还有可能发生跨站点脚本攻击?例如通过 WebForms 中的 Literal 控件:
litMessage.Text = "Your mail address is " + mail.Address;
即使我通过解析字符串确保地址是有效的电子邮件地址,是否有必要清理输出?
据我所知,邮件地址的 RFC 非常复杂,所以我不确定跨站点脚本是否可以隐藏在 .NET 认为有效的邮件地址中。
编辑:
MSDN说,>
电子邮件<
地址中允许使用括号:
如果将地址括在尖括号中,地址参数可以包含显示名称和关联的电子邮件地址。例如:“汤姆·史密斯 <tsmith@contoso.com>”
所以问题仍然存在,这是否足以应对 XSS 攻击和/或MailMessage
该类是否采取任何措施来逃避危险部分。