【问题标题】:Validating Alphanumeric in MVC在 MVC 中验证字母数字
【发布时间】:2014-12-16 22:19:52
【问题描述】:

我是一个使用 DataAnnotation 来验证 MVC 中的 AlphaNumeric 字符的文本框。它工作正常,但是当我在文本框中输入 '<script type='text/javascript'>alert('This site sucks!');</script>' 时它不起作用。

  [RegularExpression("^([a-zA-Z0-9 .&'-]+)$", ErrorMessage="Illegal character found in name. Please enter a valid name")]
    public string Name { get; set; }

以下是我的查看代码

  @Html.Raw(Html.TextBoxFor(p => p.Name, new { @class = "k-textbox", @style = "width:400px" }))
  @Html.Raw(Html.ValidationMessageFor(p => p.Name))

一些帮助可能会有所帮助

【问题讨论】:

  • 它们不相关,一个是模型(服务器端验证属性),用于在强类型视图中显示字段,另一个只是一个脚本,它是 100% 客户端,谁知道没有名为“名称”的属性
  • 我已经编辑了我的问题
  • 它适用于免费的正则表达式工具 expresso。这意味着客户端中可能没有发生验证逻辑。
  • 您是否尝试在表达式开头添加@符号并删除转义字符?或者用@Html.raw 包装你的视图代码?
  • 我猜测,我相信. 正则表达式符号匹配任何字符。你可能需要逃避它。此外,我将“k-textbox”类与 Kendo UI 相关联,它与 MVC 使用的 jQuery 验证插件不能很好地配合。请参阅the Kendo docs 了解更多信息。

标签: javascript c# regex model-view-controller


【解决方案1】:

答案是您无法验证上述字符串。 因为它是一种 JavaScript 注入攻击。 所以我只是处理了 HttpRequestValidationExpection。

【讨论】:

    【解决方案2】:

    这应该匹配那个字符串:[<>A-Za-z0-9'\(\)/= !;]+
    您可以查看这个允许您调试正则表达式的网站:http://www.regexr.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 2016-12-03
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多