我有一个带有textarea的用户表单,允许用户提交html格式的数据。 html本身受PHP strip_tags的限制,但当然没有完成检查等。
我的基本问题是,如果用户留下未公开的标记,例如<a>
标记,那么之后的所有内容,包括随后的用户内容显示区域之外的页面内容,都可以现在是畸形的。
检查标签是否正确完成是我将要考虑的一个解决方案,但理想情况下,我希望以某种方式将用户的HTML标记内容与网站的其他部分隔离开来。
答案 0 :(得分:2)
实现完全隔离的唯一方法是使用iframe。
另一种解决方案是限制用户可以使用的html标签。将用户限制为段落和内嵌标记(string
,em
,a
等)可确保您可以将所有内容包装在div标记中,而不必担心打开标签
答案 1 :(得分:2)
使用HTML Purifier。非常彻底且易于使用的独立插件。它确保所有标记都是有效的XHTML,并且还可以防止XSS攻击。
我建议在数据库中保存用户HTML输入的两个副本。一个副本将是他们提交的原始表单,您可以在以后编辑页面时使用它们,第二个副本将由您在输出上显示的HTML Purifier进行清理。存储已清理的版本要比在每次加载页面时运行HTML Purifier快得多。
答案 2 :(得分:0)
只需使用一些功能来完成未关闭的标签。 这可以帮助您: http://concepts.waetech.com/unclosed_tags/