2011-04-13 21 views
1

我有一些本地編寫的HTML,希望通過HTML淨化器運行它。它完全由我生成,所以我知道沒有XSS漏洞。我試圖通過淨化器運行它,但無論我嘗試什麼,都會解析href ='javascript:myFunc()'。如何使用HTML淨化器允許href ='javascript:myFunc()'?

我目前的設置是:

$string = file_get_contents($myHTMLFile); 
$schemes = array (
    'http' => true, 
    'https' => true, 
    'mailto' => true, 
    'ftp' => true, 
    'nntp' => true, 
    'news' => true, 
    'javascript' => true, 
); 
$config = HTMLPurifier_Config::createDefault(); 
$config->set('URL.AllowedSchemes', array($schemes)); 
$purifier = new HTMLPurifier($config); 
$string = $purifier->purify($string); 

這不是工作在所有 - 所有的JavaScript被剝離出來。

我已經查看了所有各種HTML Purifier配置設置,但找不到我需要的東西。有沒有答案?

在此先感謝

+0

http://stackoverflow.com/questions/5138282/how-do-i-add-javascript-url-scheme-in-html-purifier-module-in-drupal有文檔鏈接。儘管我可以毫不知情。 (繁瑣的配置) - 如果你想出來,請自己發佈答案! – mario 2011-04-13 18:02:06

回答

1

簡單的答案:不要使用HTML Purifier。改用HTML Tidy之類的東西。

更復雜的答案:不要使用JavaScript:網址;相反,將類屬性附加到您希望擁有JavaScript的鏈接上,然後讓JavaScript處理程序查找具有此類的鏈接並將JavaScript代碼作爲onClick處理程序附加。

更復雜的答案:創建一個新的JavaScript URI方案並將其編程爲僅接受固定字符串,這是您的函數。