Htmlpurifier 没有在允许的标签中添加一些标签

问题描述 投票:0回答:1

我想配置 htmlpurifier,以便它允许 html 中的标签。 Htmlpurifier 与标签表、tbody 的白名单不起作用。 在官网演示模式下,即使将table标签添加到允许的标签中,也会被删除。但标签工作正常。告诉我,我做错了什么?

您可以尝试在这里配置:https://htmlpurifier.org/demo.php

$whitelistTagList = ['u', 'table'];

$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', implode(', ', $whitelistTagList));

return HTMLPurifier::getInstance()->purify($value, $config);
php xss htmlpurifier
1个回答
0
投票

值得注意的是,

<table>
标签本身并不是有效的 HTML。您还需要允许
<tr>
<td>
<th>
等等。否则 HTML Purifier 充其量只能将输入变成这样:

<table>
  <tr>
    <td>
      Foo
    </td>
  </tr>
</table>

...通过净化进入此:

<table>
      Foo
</table>

...并且由于

<table>
需要其内部的其他 HMTL 节点才有效,因此整个
<table>
标签及其内容将被删除。

作为旁注,您可能应该

implode(',', $whitelistTagList)
,没有空格。巧合的是,它也适用于空格,但 描述的语法
HTML.Allowed
不使用逗号后的空格:

使用以下方式指定允许的元素和属性:

element1[attr1|attr2],element2...
。例如,如果您只想允许段落和链接,请指定
a[href],p

© www.soinside.com 2019 - 2024. All rights reserved.