我有一些我在本地编写的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配置设置但找不到我需要的内容。有答案吗?
提前致谢
答案 0 :(得分:1)
简单回答:不要在其上使用HTML Purifier。使用类似HTML Tidy的东西。
更复杂的答案:不要使用javascript:URL;相反,将类属性附加到您想要拥有JavaScript的链接,然后让JavaScript处理程序查找具有此类的链接并将JavaScript代码作为onClick处理程序附加。
更复杂的答案:创建一个新的javascript URI方案并对其进行编程只接受固定字符串,这是你的功能。