您使用什么来验证ASP.NET表单上的电子邮件地址。我想确保它不包含XSS漏洞。
这是ASP.NET 1.1
发布于 2008-10-08 12:55:48
在ASP.NET web表单上发布的任何脚本标记都会导致您的站点抛出未处理的异常。
你可以使用asp正则表达式验证器来确认输入,只要确保你的代码在方法后面有一个if(IsValid)子句,以防你的javascript被绕过。如果您的客户端javascript被绕过,并且脚本标记被发布到您的asp.net表单,asp.net将抛出一个未处理的异常。
您可以使用类似以下内容:
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>
发布于 2008-11-07 12:43:00
这是我根据西蒙·约翰逊的想法创建的一个基本的电子邮件验证器。它只需要添加DNS查找的额外功能,如果需要的话。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Web.UI;
namespace CompanyName.Library.Web.Controls
{
[ToolboxData("<{0}:EmailValidator runat=server></{0}:EmailValidator>")]
public class EmailValidator : BaseValidator
{
protected override bool EvaluateIsValid()
{
string val = this.GetControlValidationValue(this.ControlToValidate);
string pattern = @"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$";
Match match = Regex.Match(val.Trim(), pattern, RegexOptions.IgnoreCase);
if (match.Success)
return true;
else
return false;
}
}
}
更新:请不要使用原始的Regex。找一个更新的、更完整的样本。
发布于 2008-10-08 12:55:12
您可以使用RegularExpression验证器。ValidationExpression属性有一个按钮,您可以在Visual Studio的属性面板中按下该按钮,该面板列出了许多有用的表达式。他们使用的电子邮件地址是:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
https://stackoverflow.com/questions/182542
复制相似问题