我有這個財產是HTML從TinyMCE的編輯保存:如何在CakePHP 2.2中輸出原始HTML?
<?php echo h($person['Person']['CurriculumVitae']); ?>
我怎樣才能把它顯示在網頁上,並渲染爲原始的HTML不是一個簡單的字符串?
我有這個財產是HTML從TinyMCE的編輯保存:如何在CakePHP 2.2中輸出原始HTML?
<?php echo h($person['Person']['CurriculumVitae']); ?>
我怎樣才能把它顯示在網頁上,並渲染爲原始的HTML不是一個簡單的字符串?
不要住變量在h()
,別名爲htmlspecialchars()
,其轉義HTML實體:
<?php echo $person['Person']['CurriculumVitae']; ?>
這不是一個好主意,要麼是因爲現在可以通過此字段注入惡意代碼(如果根本沒有發生sanitazion)。 – burzum
我並不反對,但OP確實要求* raw * - 沒有什麼比XSSed更原始! ;-)在我看來,消毒應該在(處理提交時)的路上發生,而不是出路。 –
只是爲了去除H()可能會解決你的問題,但它會打開,因爲潛在的安全漏洞使TinyMCE中的html保持不變的字段現在將成爲一個可能的安全漏洞。
我有完全相同的問題,並通過使用http://htmlpurifier.org/來解決tinymce HTML的輸出問題。我也寫了一個CakePHP插件。 https://github.com/burzum/HtmlPurifier
HtmlPurifier將允許您配置一組允許的Html元素,甚至是它的屬性。所以你可以例如指定允許href但class不是。
您需要爲HtmlPurifier創建一個配置,以匹配用戶使用TinyMce所做的任何操作。它會從用戶輸入的標記中刪除所有不允許的標記和屬性。
請不要刪除您的問題,除非這是一個完全不值得的問題。我花了5分鐘寫一個關於Persona模型關聯的問題的詳細答案,只讓它說「這個問題已被其作者刪除」。留下問題,並隨時自行回答,但不要刪除它。它可以幫助未來的人,而不僅僅是你。 – Dave