回答
发布了ASP.NET Web窗体上的任何脚本标签将导致您的网站并抛出未处理的异常。
你可以使用一个asp正则表达式验证器来确认输入,只要你的javascript被绕过,确保你用if(IsValid)子句包装你的代码。 如果您的客户端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>
防止XSS是验证输入一个不同的问题。
关于XSS:您不应该尝试检查对于XSS或相关漏洞的输入。在将字符串插入到某些字符为“魔术”的不同语言中时,例如在以HTML或SQL插入字符串时,应该通过正确转义避免XSS漏洞利用,SQL注入等。例如像O'Reilly这样的名字是完全有效的输入,但如果插入到SQL中则可能导致崩溃或更糟。您无法通过验证输入来防止这类问题。
确认用户输入有意义,以防止丢失或格式错误的数据,例如。用户在邮政编码字段中写“asdf”等等。 WRT。电子邮件地址,语法虽然非常复杂,但它并没有提供多大的好处来验证它使用正则表达式。只需检查它是否包含“@”。
您可以使用RegularExpression验证程序。 ValidationExpression属性具有一个按钮,您可以在Visual Studio的属性面板中按下按钮,以获取列表中很多有用的表达式。他们使用的电子邮件地址的一个是:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
请注意,这不包括一些有效的电子邮件地址。 – Sam 2013-04-10 23:42:50
验证,这是一个真实的电子邮件地址是更难。
确认语法正确的正则表达式可能很长(例如参见http://www.regular-expressions.info/email.html)。确认电子邮件地址的最佳方式是向用户发送电子邮件,并通过单击链接来验证用户是否收到了电子邮件(大多数注册系统的工作方式),以便用户回复。
在我们的代码中,我们有一个从BaseValidator类继承的特定验证器。
该类执行以下操作:
- 验证对正则表达式的E-mail地址。
- 在域名的MX记录上进行查找,以确保至少有一台服务器要提供给该域。
这是最接近你可以得到验证没有实际发送人的电子邮件确认链接。
下面是我刚刚根据Simon Johnson的想法创建的基本电子邮件验证程序。只需要添加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]+)*)[email protected][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;
}
}
}
你应该总是做服务器端validaton。
public bool IsValidEmailAddress(string email)
{
try
{
var emailChecked = new System.Net.Mail.MailAddress(email);
return true;
}
catch
{
return false;
}
}
- 1. 验证电子邮件地址
- 2. 电子邮件地址验证
- 3. 验证电子邮件地址失败
- 4. ListView验证电子邮件地址
- 5. iOS电子邮件地址验证
- 6. 如何验证电子邮件地址
- 7. 验证ASP.NET中的电子邮件地址域
- 8. 验证ASP.NET C#上的自定义ac.uk地址的电子邮件地址
- 9. 电子邮件地址验证与JavaScript不工作在ASP.net
- 10. ASP.Net - 使用正则表达式验证电子邮件地址?
- 11. ASP.NET验证比较匹配2个电子邮件地址
- 12. 使用电子邮件地址进行Asp.Net身份验证
- 13. 554邮件被拒绝:电子邮件地址未验证
- 14. 如何在MVC中发送电子邮件地址验证电子邮件?
- 15. html helper的电子邮件验证 - ASP.Net
- 16. Rails验证阻止电子邮件地址和电话号码
- 17. 验证:超出电子邮件地址/电话号码
- 18. Zend framework2电子邮件验证为特定的地址,如Gmail和阻止特定的电子邮件地址
- 19. jQuery的验证插件多个电子邮件地址
- 20. 如何验证CSV文件上的电子邮件地址:: laravel
- 21. PHP Form/jQuery验证电子邮件地址 - 显示不良的电子邮件地址
- 22. asp.net电子邮件长度验证
- 23. ASP.NET自定义验证电子邮件
- 24. ASP.Net电子邮件和帐户验证
- 25. 从文本文件验证电子邮件地址?
- 26. 电子邮件地址验证但创建帐户,虽然如果电子邮件地址无效
- 27. 从javascript验证无法识别的电子邮件地址
- 28. 基于域名的电子邮件地址验证
- 29. URL上的验证电子邮件地址
- 30. 使用javascript&jquery验证按键上的电子邮件地址
他说,它的ASP.NET 1.1,支持在该版本验证控件? – Shimmy 2009-07-13 08:31:31
RegularExpressionValidators在ASP.NET 1.1提供http://msdn.microsoft.com/en-us/library/eahwtc9e%28v=VS.71%29.aspx – Diskdrive 2011-04-27 00:42:27
我用这句话,但奇怪的是它似乎让空电子邮件......?我还必须添加一个必需的字段验证程序。 – UmaN 2012-05-14 07:38:04