模型中的正则表达式时间限制

时间:2015-05-03 22:58:39

标签: regex asp.net-mvc

我有一个带正则表达式的注册模型,但在C#中我们有Regex.ValidateMatchTimeout来防止DDoS攻击。 问题是,如何在模型中实现带有timelimit的正则表达式?

我的模型中的正常正则表达式:

[DataType(DataType.EmailAddress)]
[Required]
[Display(Name = "Email")]
[StringLength(80, ErrorMessage = "Email too large.")]
[RegularExpression(@"^([a-zA-Z0-9_.-]+)@(outlook|hotmail|yahoo)\.\w{2,}$", ErrorMessage = "Invalid email.")]
public string Email { get; set; }

1 个答案:

答案 0 :(得分:2)

RegularExpression attribute不允许您以任何方式指定超时。另一方面,您可以设置全局默认超时。如果没有配置任何内容,则超时将是无限的。

AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(1));

更多信息:

另一种方法是根据reference source创建自己的属性。