我的 MVC 视图中有一个文本框,允许用户输入 HTML 标签,但只有少数标签(例如 B、I、U 和 A)。为此,我将 POST 操作上的 ValidateInput 属性设置为 False,因此它允许用户输入 HTML 标记。但现在我想限制用户输入其他 HTML 标签,例如(INPUT、SCRIPT 等)。我的意思是,除了我想允许的那些之外的任何东西。
我想,一种方法是使用正则表达式,但我无法为此找到合适的正则表达式。
知道如何实现这一目标吗?对此非常感谢任何帮助。
谢谢并恭祝安康
我的 MVC 视图中有一个文本框,允许用户输入 HTML 标签,但只有少数标签(例如 B、I、U 和 A)。为此,我将 POST 操作上的 ValidateInput 属性设置为 False,因此它允许用户输入 HTML 标记。但现在我想限制用户输入其他 HTML 标签,例如(INPUT、SCRIPT 等)。我的意思是,除了我想允许的那些之外的任何东西。
我想,一种方法是使用正则表达式,但我无法为此找到合适的正则表达式。
知道如何实现这一目标吗?对此非常感谢任何帮助。
谢谢并恭祝安康
这很危险,伙计。您的用户仍然可以使用一些技巧插入不需要的标签,例如编码数据。即使您尝试考虑用户在您的代码中输入“危险”标签的所有可能方式,他也会找到另一种方式。
因此,您应该尝试为您的问题寻找某种经过验证的解决方案。寻找 HTML sanitizer,例如 Google ASP.NET MVC sanitize html input
,您会找到几种解决方案。AntiXSS 库可能是一个很好的解决方案:现在它被称为Microsoft Web protection Library。您可以将其作为 NuGet 包包含在您的解决方案中:
Install-Package AntiXSS
我建议您阅读本文以更深入地了解问题及其解决方案:
.NET HTML Sanitation 用于丰富的 HTML 输入
在本文中,您将找到AniXSS
一个限制较少的解决方案,其中包含对优缺点及其工作原理的完整解释。不要错过评论中的参考资料。