如何允许文本框仅接受特定的HTML标记?

时间:2014-06-30 07:18:04

标签: regex asp.net-mvc asp.net-mvc-4 html-sanitizing

我在MVC视图中有一个文本框,允许用户输入HTML标签,但只有少量标签(例如,B,I,U和A)。 为此,我将POST操作的ValidateInput属性设置为False,因此它允许用户输入HTML标记。 但现在我想限制用户输入其他HTML标签,如(INPUT,SCRIPT等)。我的意思是,除了我想要允许的任何东西。

我想,一种方法是使用正则表达式,但我无法为此找到正确的正则表达式。

知道怎么做到这一点?对此的任何帮助都非常感激。

谢谢和问候

1 个答案:

答案 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和一个限制较少的解决方案,其中包含对优缺点的完整解释,以及它们如何运作。不要错过评论中的参考文献。