微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC - 正则表达式允许小于字符安全

如何解决ASP.NET MVC - 正则表达式允许小于字符安全

我有一个 ASP.NET MVC 5 应用程序,我的业务用户需要在其中输入 <(小于号)。对于其特定的业务部门,< 是常用符号。我知道 XSS-Attacks 的问题,但我试图找到一种解决方案,在不打开 XSS-Attacks 的情况下只允许 <。我想要允许 HTML,所以我不知道如何设置 [AllowHtml] 或禁用验证规则。它们应该被打开。

我想只允许 < 后跟一个空格,它不是有效的 html 标记,并且不会被 ASP.NET 检测为危险请求。我认为最好的选择是设置正则表达式,但我不知道正则表达式应该是什么样子。

例如,我想扩展此正则表达式(数据注释):[RegularExpression(@"^[a-zA-Z0-9 ]+$",ErrorMessage = "some message")] 以允许 < 后跟一个空格。

如果我允许 <(后跟空格),还有什么需要考虑的吗?

解决方法

你可以使用

[RegularExpression(@"^(?:[a-zA-Z0-9 ]|<(?= ))+$",ErrorMessage = "some message")]

详情

  • ^ - 字符串的开始
  • (?: - 非捕获组的开始:
    • [a-zA-Z0-9 ] - 一个字母、数字或空格
    • | - 或
    • <(?= ) - 后跟空格的 <
  • )+ - 组结束,匹配一次或多次
  • $ - 字符串结束。

参见regex demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。