如何在HTML Purifier中允许href =\'javascript:myFunc\'?

问题描述

| 我有一些在本地编写的HTML,并且希望通过HTML净化器运行它。它完全由我生成,因此我知道没有XSS漏洞。我正在尝试通过净化器运行它,但是无论我尝试什么,都会解析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配置设置,但找不到我需要的东西。有什么答案吗? 提前致谢     

解决方法

简单的答案:不要在其上使用HTML Purifier。改用HTML Tidy之类的东西。 更复杂的答案:不要使用javascript:URL;相反,将类属性附加到您想要具有JavaScript的链接上,然后让JavaScript处理程序查找具有此类的链接,并将JavaScript代码作为onClick处理程序附加。 甚至更复杂的答案:创建一个新的javascript URI方案并对其进行编程,以仅接受属于您的函数的固定字符串。