asp.net - 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 ]
- 字母、数字或空格|
- 或者<(?= )
- a<
后跟一个空格
)+
- 小组结束,匹配一次或多次$
- 字符串结束。
请参阅正则表达式演示。
推荐阅读
- spring-boot - 当要传递的列表的任何元素中包含连字符时,Spring Data JPA IN 子句返回超过预期的值
- hadoop - 不是有效的标识符/在启动 hadoop 时不可执行
- python - 如何修复 ValueError:X 每个样本有 86 个特征;期待 52640
- python - Tkinter 在按钮单击后调用一个函数
- python - 为什么我的 Environ 导入不导入 .env 变量?
- javascript - 没有编译错误但未捕获 TypeError:Copy Text is null using copy.select()
- spring - 如何解决并发事务中的保存/持久实体以及处理并发请求的最佳方法是什么?
- r - 使用不带入口点的 Docker 映像来服务 R 管道工 API
- php - 如何将 API 发布请求作为对象存储到 JSON 文件?
- swiftui - 在 ForEach 循环中绑定时,如何阻止 SwiftUI TextField 失去焦点?