错误的正则表达式验证:从客户端检测到潜在危险的request.form值

时间:2017-01-18 14:17:54

标签: asp.net regex asp.net-mvc

我有更改密码表单,在密码字段中我添加了<script>alert(),我收到此错误:

A potentially dangerous request.form value was detected from the client

为此,我想添加一个正则表达式验证,我尝试过以下验证,但它不起作用:

[RegularExpression(@"/[^a-zA-Z0-9'_-.&#@$]*$", ErrorMessage = "Invalid Password")]

我只想让用户(a-zA-Z0-9'_-.&#@$),别的。

如果用户在密码字段中添加<script>alert()</script>类型的值,则应显示验证。我不想让用户存储这种类型的密码。

2 个答案:

答案 0 :(得分:3)

模式有几个问题:

  1. 您必须至少一个符号:[...]+而不是[...]*(如果空密码正常,则{{1}然而,这是正确的)
  2. 您应检查 *而不是^[...]+$
  3. 您希望范围内检查,而不是 范围检查:[...]+$,而不是[...]
  4. 最后[^...]在括号内-表示 range ,例如[...];逃避它:A-Z
  5. 总结

    [...\-...]

    最有可能的是,您希望密码至少 [RegularExpression(@"^[a-zA-Z0-9'_\-.&#@$]+$", ErrorMessage = "Invalid Password")] 个字符;在这种情况下,将n更改为+,例如典型密码最小长度为{n,}

    n == 8

答案 1 :(得分:0)

您可以使用此模式。连字符应该在结尾或开始时。

[^a-zA-Z0-9'_.&#@$-]

OR

[^-a-zA-Z0-9'_.&#@$]

对于使用\-使用的连字符也没问题