使用富文本编辑器时的输入验证

时间:2009-10-05 16:55:25

标签: asp.net asp.net-mvc ckeditor validation

我有一个ASP.NET MVC应用程序,我正在使用CKEditor进行文本输入。我已关闭输入验证,因此可以将从CKEditor创建的HTML传递给控制器​​操作。然后我在网页上显示输入的HTML。

我只启用了CKEditor上的某些按钮,但显然有人可以发送他们想要的任何文本。我希望能够在用户输入后在页面上显示HTML。如何验证输入,但仍能显示编辑器中启用的一些内容?

所以基本上我想要消除除了一些关键内容之外的所有内容,例如粗体,斜体,列表和链接。这需要在服务器端完成。

3 个答案:

答案 0 :(得分:0)

AntiXSS怎么样?

答案 1 :(得分:0)

从类似问题中查看完整答案here

  

我发现更换天使   带编码天使支架的括号   解决了大多数问题

答案 2 :(得分:0)

您可以为您要允许的html标签创建各种“白名单”。你可以从HTML编码开始整个事情。然后,替换一系列“允许”序列,例如:

"&lt;strong&gt;" and "&lt;/strong&gt;" back to "<strong>" and "</strong>"
"&lt;em&gt;" and "&lt;/em&gt;" back to "<em>" and "</em>"
"&lt;li&gt;" and "&lt;/li&gt;" back to ... etc. etc.

对于像A标签这样的东西,你可以使用正则表达式(因为你也希望允许href属性)。您仍然需要小心XSS;其他人已经推荐了AntiXSS。

示例Regexp替换A标签:

&lt;a href="([^"]+)"&gt;

然后替换为

<a href="$1">
祝你好运!