2012-10-03 22 views
1

我有这个财产是HTML从TinyMCE的编辑保存:如何在CakePHP 2.2中输出原始HTML?

<?php echo h($person['Person']['CurriculumVitae']); ?> 

我怎样才能把它显示在网页上,并渲染为原始的HTML不是一个简单的字符串?

+0

请不要删除您的问题,除非这是一个完全不值得的问题。我花了5分钟写一个关于Persona模型关联的问题的详细答案,只让它说“这个问题已被其作者删除”。留下问题,并随时自行回答,但不要删除它。它可以帮助未来的人,而不仅仅是你。 – Dave

回答

2

不要住变量在h(),别名为htmlspecialchars(),其转义HTML实体:

<?php echo $person['Person']['CurriculumVitae']; ?> 
+0

这不是一个好主意,要么是因为现在可以通过此字段注入恶意代码(如果根本没有发生sanitazion)。 – burzum

+1

我并不反对,但OP确实要求* raw * - 没有什么比XSSed更原始! ;-)在我看来,消毒应该在(处理提交时)的路上发生,而不是出路。 –

2

只是为了去除H()可能会解决你的问题,但它会打开,因为潜在的安全漏洞使TinyMCE中的html保持不变的字段现在将成为一个可能的安全漏洞。

我有完全相同的问题,并通过使用http://htmlpurifier.org/来解决tinymce HTML的输出问题。我也写了一个CakePHP插件。 https://github.com/burzum/HtmlPurifier

HtmlPurifier将允许您配置一组允许的Html元素,甚至是它的属性。所以你可以例如指定允许href但class不是。

您需要为HtmlPurifier创建一个配置,以匹配用户使用TinyMce所做的任何操作。它会从用户输入的标记中删除所有不允许的标记和属性。