我在MVC视图中有一个文本框,允许用户输入HTML标签,但只有少量标签(例如,B,I,U和A)。 为此,我将POST操作的ValidateInput属性设置为False,因此它允许用户输入HTML标记。 但现在我想限制用户输入其他HTML标签,如(INPUT,SCRIPT等)。我的意思是,除了我想要允许的任何东西。
我想,一种方法是使用正则表达式,但我无法为此找到正确的正则表达式。
知道怎么做到这一点?对此的任何帮助都非常感激。
谢谢和问候
答案 0 :(得分:1)
这很危险,伙计。您的用户仍然可以使用一些技巧插入不需要的标记,例如编码数据。即使您尝试考虑用户在代码中输入“危险”标签的所有可能方式,他也会找到另外一个。
因此,您应该尝试为您的问题寻找某种经过验证的解决方案。寻找HTML清理程序,例如Google ASP.NET MVC sanitize html input
,您会找到几种解决方案。 AntiXSS库可能是一个很好的解决方案:现在称为Microsoft Web protection Library。您可以将其作为NuGet包包含在您的解决方案中:
Install-Package AntiXSS
我建议您阅读本文以深入了解问题及其解决方案:
.NET HTML Sanitation for rich HTML Input
在本文中,您将找到AniXSS
和一个限制较少的解决方案,其中包含对优缺点的完整解释,以及它们如何运作。不要错过评论中的参考文献。