********* Обновленный вопрос **************
Поэтому я попытался реализовать свой собственный AttrDef для HTMLPurifier, но он не «берет», и я также не могу отладить с помощью die ().
Вот что у меня есть:
Я создал Transform.php в каталоге HTMLPurifier / AttrDef / CSS /. Пока единственное содержимое это (я только сейчас пытаюсь подключить его, я добавлю проверяющую логику, как только я увижу, что он находится в цикле и, следовательно, могу его проверить):
<?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';
и в библиотеку / 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 к любому свойству transform, в CSSDefinition.php:
$this->info['transform'] = new HTMLPurifier_AttrDef_CSS_Color();
И я взломал оригинальное определение цвета следующим образом:
//TODO: testing ways to bypass
if (strpos($color, 'rotate(') !== false) {
return $color;
}
Не работает. Пожалуйста, совет, что я пропускаю.
Вам нужно определить свой собственный AttrDef, который знает, как анализировать и проверять такие определения. Цвет должен служить достойной моделью, поскольку синтаксис rgb похож на матрицу.
Других решений пока нет …