如何使用HTML Purifier允许href ='javascript:myFunc()'?

时间:2011-04-13 17:48:05

标签: php html-parsing htmlpurifier

我有一些我在本地编写的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配置设置但找不到我需要的内容。有答案吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

简单回答:不要在其上使用HTML Purifier。使用类似HTML Tidy的东西。

更复杂的答案:不要使用javascript:URL;相反,将类属性附加到您想要拥有JavaScript的链接,然后让JavaScript处理程序查找具有此类的链接并将JavaScript代码作为onClick处理程序附加。

更复杂的答案:创建一个新的javascript URI方案并对其进行编程只接受固定字符串,这是你的功能。