xemlock/htmlpurifier-html5

HTML Purifier 的 HTML5 支持

v0.1.11 2019-08-07 17:19 UTC

README

Build Status Coverage Status Latest Stable Version Total Downloads License

此库为 HTML Purifier 提供 HTML5 元素定义,符合 WHATWG 规范

它是基于 HTML Purifier 的最完整 HTML5 兼容解决方案。除了提供最全面的元素定义集外,它还提供了 tidy/sanitization 规则,用于将输入转换为有效的 HTML5 输出。

安装

使用 Composer 安装,执行以下命令

composer require xemlock/htmlpurifier-html5

用法

最基本的使用方法与原始 HTML Purifier 相似。使用 HTMLPurifier_HTML5Config::createDefault() 工厂方法创建一个 HTML5 兼容的配置,然后将它传递给一个 HTMLPurifier 实例

$config = HTMLPurifier_HTML5Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html5 = $purifier->purify($dirty_html5);

要修改配置,你可以通过将配置数组传递给 HTMLPurifier_HTML5Config::create() 实例化配置,或者通过在已存在的配置实例上调用 set 方法。

例如,要允许带有 YouTube 视频的 IFRAME,可以执行以下操作

$config = HTMLPurifier_HTML5Config::create(array(
  'HTML.SafeIframe' => true,
  'URI.SafeIframeRegexp' => '%^//www\.youtube\.com/embed/%',
));

或等价地

$config = HTMLPurifier_HTML5Config::createDefault();
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^//www\.youtube\.com/embed/%');

配置

除了 HTML Purifier 内置的 配置指令 外,还支持以下新指令

  • Attr.AllowedInputTypes

    版本添加:0.1.12
    类型:查找(或 null)
    默认值:null

    允许的输入类型列表,从规范中定义的类型中选择。默认情况下,设置是 null,意味着没有对允许类型的限制。空数组意味着不允许显式 type 属性,实际上将所有输入视为文本输入。

  • HTML.Forms

    版本添加:0.1.12
    类型:布尔值
    默认值:false

    是否允许用户输入中的表单元素,无论 %HTML.Trusted 值如何。请非常小心地使用此功能,因为在不信任的文档中启用表单可能会允许钓鱼攻击。

  • HTML.IframeAllowFullscreen

    版本添加:0.1.11
    类型:布尔值
    默认值:false

    是否允许在 iframe 标签上使用 allowfullscreen 属性。它需要 %HTML.SafeIframe%HTML.Trustedtrue

  • HTML.Link

    版本添加:0.1.12
    类型:布尔值
    默认值:false

    允许用户输入中的 link 标签,无论 %HTML.Trusted 值如何。这实际上允许 link 标签而不允许其他未信任的元素。

    如果启用,link 标签中的 URI 不会与 %URI.SafeLinkRegexp 中指定的白名单匹配(除非 %HTML.SafeIframe 也启用)。

  • HTML.SafeLink

    版本添加:0.1.12
    类型:布尔值
    默认值:false

    是否允许在不信任的文档中允许 link 标签。此指令必须通过 %URI.SafeLinkRegexp 配置允许的 URI 白名单,否则不允许任何 link 标签。

  • HTML.XHTML

    版本添加:0.1.12
    类型:布尔值
    默认值:false

    尽管在HTML 4.01 / XHTML 1.0的上下文中已弃用,但在HTML5中,它用于启用对命名空间属性和XML自闭合标签的支持。

    当启用时,它会导致在同一个元素上同时存在时,xml:lang属性优先于lang属性。

  • URI.SafeLinkRegexp

    版本添加:0.1.12
    类型:字符串
    默认值:null

    一个PCRE正则表达式,将用于匹配一个<link> URI。只有当%HTML.SafeLink启用时,此指令才有效。以下是一些示例值:%^https?://localhost/% - 允许本地URI

    使用Attr.AllowedRel来控制允许的链接关系类型。

支持的HTML5元素

除了HTML Purifier最初支持的HTML元素之外,此库还支持以下HTML5元素

<article><aside><audio><bdi><data><details><dialog><figcaption><figure><footer><header><hgroup><main><mark><nav><picture><progress><section><source><summary><time><track><video><wbr>

以及添加到现有HTML元素的HTML5属性,例如

<a><del><fieldset><ins><script>

许可证

MIT许可证(MIT)。请参阅LICENSE文件。