我有一个带正则表达式的注册模型,但在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; }
答案 0 :(得分:2)
RegularExpression
attribute不允许您以任何方式指定超时。另一方面,您可以设置全局默认超时。如果没有配置任何内容,则超时将是无限的。
AppDomain.CurrentDomain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(1));
更多信息:
另一种方法是根据reference source创建自己的属性。