2010-10-09 123 views
3

我試圖從所見即所得(CK編輯器)的用戶輸入上運行HTMLPurifier,並且圖像正在破壞。HTMLPurifier破壞圖像

未過濾輸入:

<img alt="laugh" src="/lib/ckeditor/plugins/smiley/images/teeth_smile.gif" title="laugh"> 

通過淨化器使用默認設置運行後:

<img alt="&quot;laugh&quot;" src="%5C" title="&quot;laugh&quot;"> 

我試圖改變的配置設置;但我的src永遠不會被保留下來。有什麼想法嗎?

+1

用我的心靈調試的權力,我認爲你有魔術引號。 – 2010-10-09 08:12:53

回答

4

我懷疑magic_quotes可能是一個原因..?

你也試過$config->set('Core.RemoveInvalidImg',true);。你正在使用哪個版本? (嘗試更舊或更新)

+0

我正在使用版本4.1.1。我嘗試使用建議的配置設置,但沒有運氣。我沒有在字符串上運行任何其他清理例程,它通過MySqli準備好的語句存儲到數據庫中。 – pws5068 2010-10-09 15:08:45

+0

我誤讀了「magic quotes」來調用mysql_escape_string。你是絕對正確的,我的php.ini文件被設置爲自動轉義引號:magic_quotes_gpc設置爲ON。問題解決了。謝謝! – pws5068 2010-10-09 15:20:47

1

我不知道htmlpurifier是什麼,但在運行它之前,您擁有的img標記完全合法(除非它是未封閉的)。在你運行它之後,它會雙倍地逃避東西,而這看起來就像是垃圾。 %5C是反斜槓的網址代碼。似乎它試圖用反斜槓逃避前斜線,然後它窒息。這個計劃是什麼?我可以推薦HTML Tidy嗎?

+0

Unary標籤不需要'/>'在HTML中關閉它們;這是一個XHTML習慣用法。 – 2010-10-09 06:27:07

+0

爲什麼你會打擾使HTML不能成爲XHTML。所有的XHTML都可以是HTML。例如,由於上述原因,相反的情況並非如此。 – 2010-10-09 06:49:41

+0

感謝您的幫助,我開始使用HTML tidy,但轉移到淨化器以保護XSS。至於html/xhtml,我僅限於CK編輯器在這種情況下生成的內容。我可能最終修改它爲一個類似BB代碼的方法 – pws5068 2010-10-09 15:04:57

3

有同樣的問題。 這個固定

if (get_magic_quotes_gpc()) { 
function stripslashes_gpc(&$value) 
{ 
    $value = stripslashes($value); 
} 
array_walk_recursive($_GET, 'stripslashes_gpc'); 
array_walk_recursive($_POST, 'stripslashes_gpc'); 
array_walk_recursive($_COOKIE, 'stripslashes_gpc'); 
array_walk_recursive($_REQUEST, 'stripslashes_gpc'); 

}

+0

工作過,但不要忘記在將字符串保存到數據庫之前再次執行addslashes()! – bart 2012-01-11 18:02:28

1

再回到舊的文章,我覺得這個小片段可能幫助其他人結束了在這裏..

我固定的異常活動的許多在我的代碼通過加入這一行到我的.htaccess文件

php_flag magic_quotes_gpc Off 

從PHP文件做轉義字符「這一功能已被棄用的PHP 5中。 3.0和去除PHP的5.4.0" http://www.php.net/manual/en/security.magicquotes.what.php

而且,這裏有其他的方法來禁用魔術引號 http://www.php.net/manual/en/security.magicquotes.disabling.php