为什么MVC验证不适用于"<"和">"?

时间:2014-12-22 20:47:59

标签: regex asp.net-mvc

我有这个MVC应用程序,我希望能够允许用户输入长度为6到255个字符的用户名,包括我认为合适的特殊字符。我有一个简单的正则表达式:

[RegularExpression(@"^([a-zA-Z0-9!\@#\$%\^&\(\)-_\+\.'`~/=\?\{\}\|]){6,255}$", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameFormatError")]

验证在一定程度上起作用。它不会让您输入短于6个字符的用户名,也不会让您输入超过255的用户名,并且它还允许您使用我列出的所有特殊字符。有趣的是,它也会让你使用“<”和“>”,我不想让它使用,因为那时你开始在后端得到一些错误,因为安全人员认为你试图注入恶意代码或w / e。除此之外,如果验证允许在正则表达式中不包含这些内容时如何使用?

1 个答案:

答案 0 :(得分:3)

破折号似乎是罪魁祸首。除了在组的开头,它将表示范围。因此,您允许)_之间的所有内容。你可以逃脱或移动它。