2012-10-03 24 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所做的任何操作。它會從用戶輸入的標記中刪除所有不允許的標記和屬性。