想要'沙盒'用户表单提交HTML

时间:2010-06-03 18:28:38

标签: php html

我有一个带有textarea的用户表单,允许用户提交html格式的数据。 html本身受PHP strip_tags的限制,但当然没有完成检查等。

我的基本问题是,如果用户留下未公开的标记,例如<a>标记,那么之后的所有内容,包括随后的用户内容显示区域之外的页面内容,都可以现在是畸形的。

检查标签是否正确完成是我将要考虑的一个解决方案,但理想情况下,我希望以某种方式将用户的HTML标记内容与网站的其他部分隔离开来。

3 个答案:

答案 0 :(得分:2)

实现完全隔离的唯一方法是使用iframe

另一种解决方案是限制用户可以使用的html标签。将用户限制为段落和内嵌标记(stringema等)可确保您可以将所有内容包装在div标记中,而不必担心打开标签

答案 1 :(得分:2)

使用HTML Purifier。非常彻底且易于使用的独立插件。它确保所有标记都是有效的XHTML,并且还可以防止XSS攻击。

我建议在数据库中保存用户HTML输入的两个副本。一个副本将是他们提交的原始表单,您可以在以后编辑页面时使用它们,第二个副本将由您在输出上显示的HTML Purifier进行清理。存储已清理的版本要比在每次加载页面时运行HTML Purifier快得多。

答案 2 :(得分:0)

只需使用一些功能来完成未关闭的标签。 这可以帮助您: http://concepts.waetech.com/unclosed_tags/