配置HTML Purifier以允许带有File://协议的href

时间:2020-04-24 07:13:02

标签: php htmlpurifier

我正在使用HTMLPurifier过滤来自TinyMCE的HTML。我正在尝试对其进行配置,以使用户能够为链接添加file://F:\*作为href

注意:F可以是任何其他字母,这只是为了说明URL中必须存在两个:,我认为这也需要配置。 < / p>

当前行为

如果URI协议不是href,则HTMLPurifier会删除http|https属性。

预期行为

要么只允许http|https|file,要么允许所有协议。

我已经尝试过的东西

我已经添加了此配置,但是使用此选项时,必须定义允许属性的整个列表,这不是最佳选择,所以我宁愿寻找另一个不需要定义整个属性列表的选项

$config->set("HTML.AllowedAttributes", "a.href");

还有一个指向Google网站上显示的HTMLPurifier论坛的链接,但该论坛似乎已关闭...

谢谢。

1 个答案:

答案 0 :(得分:0)

在库/AttrDef/URI

只需添加一个具有您想要的名称的新文件 例如 file.php 并扩展抽象 HTMLPurifier_AttrDef_URI

例如

class HTMLPurifier_AttrDef_URI_file extends HTMLPurifier_AttrDef_URI

在那里你可以用你自己的逻辑验证传入的 $uri,如果成功则只返回 true,如果它不让它用父函数验证

然后您可以添加新的 AttrDefinition

$def = config->getHTMLDefinition(true);
$def->addAttribute('a', 'href', new HTMLPurifier_AttrDef_URI_file());