如何允许在 htmlpurifier 中进行转换

how to allow transform in htmlpurifier

********* 更新问题 **************

所以我尝试将我自己的 AttrDef 实现到 HTMLPurifier,但它没有 "take",而且我也无法使用 die() 进行调试。

这是我的:

我在 HTMLPurifier/AttrDef/CSS/ 目录中创建了 Transform.php。到目前为止唯一的内容是这个(我现在只是想把它挂钩,一旦我看到它在循环中并因此可以测试它,我将添加验证逻辑):

<?php

/**
 * Validates Transform as defined by CSS.
 */
class HTMLPurifier_AttrDef_CSS_Transform extends HTMLPurifier_AttrDef
{
    //basing this off of the color definition so the var is $color for now, may change it to $transform later
    public function validate($color, $config, $context) {
        return $color;
    }
}

我将文件添加到 library/HTMLPurifier.includes.php,如下所示:

require 'HTMLPurifier/AttrDef/CSS/Transform.php';

和 library/HTMLPurifier.safe-includes.php

require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Transform.php';

(不确定上面这两个包含文件之间的区别,但所有 AttrDef 文件似乎都在这两个文件中,所以我也将我的文件添加到这两个文件中)。

然后我尝试通过将其添加到 library/HTMLPurifier/CSSDefinition.php:

来使用这个新定义
    // transform
    $this->info['transform'] = new HTMLPurifier_AttrDef_CSS_Transform();

就好像我所有的添加都没有进行过,我也无法通过在我自己的文件中放置一个 die() 来调试它,没有任何反应。

非常感谢任何关于我哪里出错或如何调试的建议。

*********** 添加 *******

我还通过将 Color-AttrDef 应用于任何变换 属性,在 CSSDefinition.php:

中尝试了一个简单的绕过
$this->info['transform'] = new HTMLPurifier_AttrDef_CSS_Color();

然后我像这样修改了原始颜色定义:

//TODO: testing ways to bypass
    if (strpos($color, 'rotate(') !== false) {
        return $color;
    }

不工作。请就我所缺少的提出建议。

您需要定义自己的 AttrDef,它知道如何解析和验证此类定义。颜色应该作为一个不错的模型,因为 rgb 语法类似于矩阵。