2012-12-12 75 views
3

我使用htmlPurifier防止來自用戶的XSS攻擊和一切工作正常輸入類型=「文本」字段。但是,當我試圖清理tinyMCE的文字區域好像htmlPurifier鴕鳥政策工作,例:htmlpuria不工作與TinyMCE

簡單的輸入文本字段

輸入:

<script>alert("XSS")</script>Cleaning Test 

輸出:清洗試驗

tinyMCE TEXTAREA

輸入:

<script>alert("XSS")</script> 

輸出:<script>alert("XSS")</script>

我錯過了什麼?爲什麼htmlPurifier只能處理簡單的輸入文本,而不能使用tinyMCE textarea?

詩:魔術引號是關

回答

6

我想我發現什麼是錯的。

tinyMCE的自動編碼這些實體:

< into &lt; 
> into &gt; 
" into &quot; 
& into &amp; 

我試圖用diferent類型entity_encoding上TinyMCE的,但他們都不似乎工作,因爲我想要的,所以我用PHP:html_entity_decode在TinyMCE文字區域進行解碼和然後我使用htmlPurifier來清理數據,現在一切正常。

希望別人找到這個有用的。

0

您需要調用tinymce.triggerSave()以TinyMCE的內容寫回TinyMCE的源元素(可以是文本域)前的淨化器可以工作。

+0

我已經嘗試tinyMCE.triggerSave()沒有成功...我已經提出了我的提交按鈕調用triggerSave函數onClick(相同的結果),我試圖提交表單使用JavaScript如:document.formname。提交();在tinyMCE.triggerSave()(相同結果)之後。我真的不知道我還能試試更多... – suicidebilly