如何允许在 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 语法类似于矩阵。
********* 更新问题 **************
所以我尝试将我自己的 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 语法类似于矩阵。