Как мне разрешить теги script, object, param, embed и iframe в HTMLPurifier?

Это своего рода специальная комбинация тегов, которую я хочу разрешить в HTMLPurifier, но не могу заставить эту комбинацию работать .

Я могу заставить работать теги сценария, но затем теги вставки удаляются (я включаю теги сценария с помощью HTML.Trusted = true). Когда я возвращаю теги вставки, теги сценария удаляются (я удаляю HTML. Надежно). Вот моя конфигурация:

        $config->set('HTML.Trusted', true);
        $config->set('HTML.SafeEmbed', true);
        $config->set('HTML.SafeObject', true);
        $config->set('Output.FlashCompat', true);

Я даже попытался добавить следующее, что усугубило ситуацию:

        $config->set('HTML.Allowed', 'object[width|height|data],param[name|value],embed[src|type|allowscriptaccess|allowfullscreen|width|height],script[src|type]');

Кроме того, я не могу заставить работать iframe, несмотря ни на что. Я попытался добавить:

        $config->set('HTML.DefinitionID', 'enduser-customize.html iframe');
        $config->set('HTML.DefinitionRev', 1);
        $config->set('Cache.DefinitionImpl', null); // remove this later!
        $def = $config->getHTMLDefinition(true);
        $iframe = $def->addElement(
            'iframe',   // name
            'Block',  // content set
            'Empty', // allowed children
            'Common', // attribute collection
            array( // attributes
                'src*' => 'URI#embedded',
                'width' => 'Pixels#1000',
                'height' => 'Pixels#1000',
                'frameborder=' => 'Number',
                'name' => 'ID',
            )
        );
        $iframe->excludes = array('iframe' => true);

Любая помощь по обеспечению работы всей комбинации или даже тегов сценариев с object / param и embed была бы БОЛЬШЕ оценена !!!

О да, это явно не для всех пользователей, только для "особых" пользователей.

Спасибо!

PS - пожалуйста, не связывайте меня с http://htmlpurifier.org/docs/enduser-customize.html


ОБНОВЛЕНИЕ

Я нашел решение для добавления окон iframe в конце цепочки здесь: http://htmlpurifier.org/phorum/read.php?3,4646

Текущая конфигурация сейчас:

        $config->set('HTML.Trusted', true);
        $config->set('HTML.SafeEmbed', true);
        $config->set('HTML.SafeObject', true);
        $config->set('Output.FlashCompat', true);
        $config->set('Filter.Custom',  array( new HTMLPurifier_Filter_MyIframe() ));

ОБНОВЛЕНИЕ ДО ОБНОВЛЕНИЯ

Если у вас возникли проблемы с моим комментарием на форуме HTMLPurifier это может быть потому, что я имею в виду, что метод выглядит следующим образом:

public function preFilter($html, $config, $context) {
    return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));
}

7
задан shmuel613 20 January 2011 в 08:05
поделиться