强制标记在动态文本中关闭

时间:2010-06-22 21:37:42

标签: html ruby-on-rails xhtml tags wysiwyg

在我的许多网站的许多地方,用户可以通过WYSIWYG或带标签的纯文本输入格式化文本。当然,这样的输入会针对安全威胁进行清理,但它不会被剥夺标签,也不会完全实体编码。类似<p>hello world</p>的内容最终会以<p>hello world</p>的形式返回给最终用户。

大多数WYSIWYG都足够聪明,可以在将内容转换为表单之前清理XML,但是手动POST请求,非WYSIWYG文本区域和非JS用户不会受到正确方向的影响。因此,没有什么可以阻止用户输入<a href="/">,将页面的其余部分转换为链接。

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

无论用户提供什么,请使用HTML解析器进行解析。当它是一个DOM时清理它,然后将DOM序列化回HTML,获取body元素的内容(解析器将在必要时创建一个)作为发送回最终用户的字符串。所有必要的元素都将包含结束标记。

答案 1 :(得分:0)

如果用户即将发送带有未关闭标签的文字,那么发出警告信息会很明智。

  

如果用户想发布单个标签   <br>,它应该像<br />一样关闭。或者应单独使用结束标记关闭   </br>