我有一个ASP.NET MVC应用程序,我正在使用CKEditor进行文本输入。我已关闭输入验证,因此可以将从CKEditor创建的HTML传递给控制器操作。然后我在网页上显示输入的HTML。
我只启用了CKEditor上的某些按钮,但显然有人可以发送他们想要的任何文本。我希望能够在用户输入后在页面上显示HTML。如何验证输入,但仍能显示编辑器中启用的一些内容?
所以基本上我想要消除除了一些关键内容之外的所有内容,例如粗体,斜体,列表和链接。这需要在服务器端完成。
答案 0 :(得分:0)
AntiXSS怎么样?
答案 1 :(得分:0)
从类似问题中查看完整答案here:
我发现更换天使 带编码天使支架的括号 解决了大多数问题
答案 2 :(得分:0)
您可以为您要允许的html标签创建各种“白名单”。你可以从HTML编码开始整个事情。然后,替换一系列“允许”序列,例如:
"<strong>" and "</strong>" back to "<strong>" and "</strong>"
"<em>" and "</em>" back to "<em>" and "</em>"
"<li>" and "</li>" back to ... etc. etc.
对于像A标签这样的东西,你可以使用正则表达式(因为你也希望允许href属性)。您仍然需要小心XSS;其他人已经推荐了AntiXSS。
示例Regexp替换A标签:
<a href="([^"]+)">
然后替换为
<a href="$1">
祝你好运!