Почему HTML Purifier игнорирует параметры конфигурации, созданные во время выполнения?

все! Естественно, я все еще борюсь с HTML Purifier…

Итак, мой /config/purifier.php выглядит так:

<?php defined('SYSPATH') or die('No direct access allowed.');
return array(
    'settings' => array(
        'HTML.Allowed' =>'a,b,strong,p,ul,ol,li,img[src],i,u,span,',
  'HTML.MaxImgLength' => 250,
  'CSS.MaxImgLength' => '250px'
            ),
);
?>

и HTML Purifier перегружает метод Security::clean_xss() для использования собственного фильтра.

Я создал две вспомогательные функции для очистки данных: clean_whitelist(), которая удаляет все, что не разрешено моей настройкой HTML.Allowed в файле конфигурации. и clean_all(), которая удаляет все теги и игнорирует поля, переданные как ignore

 public static function clean_all(array $dirty_data, array $ignore) {
  $config = Kohana::config('purifier');
  $settings =  $config['settings'];
  $config->set('settings', array ('HTML.Allowed'=>''));
  foreach($dirty_data as $key => $value) {
   if( ! in_array($key, $ignore)) {
    $dirty_data[$key] = Security::xss_clean($dirty_data[$key]);
   }
  } 
  return $dirty_data;
 }

 public static function clean_whitelist($dirty_data) {
  return Security::xss_clean($dirty_data);
 }

clean_whitelist() работает по назначению, но clean_all по-прежнему позволяет использовать теги. Не совсем уверен, почему, когда я var_dump новую загрузку Kohana::config('purifier') после того, как я вызвал $config->set, файл отображает мой HTML.Allowed => ''…

Любые идеи о том, почему он продолжает использовать белый список, а не использовать файл конфигурации, который я создал во время выполнения?

Спасибо, как всегда, всем, кто внес свой вклад!


person PaleAilment    schedule 12.08.2010    source источник
comment
xss_clean перегружается htmlpurifier, надо копать и подтягивать там где перегружается   -  person PaleAilment    schedule 13.08.2010


Ответы (1)


Используемый вами модуль Kohana HTMLPurifier, вероятно, кэширует экземпляр с исходными параметрами конфигурации.

Если вы используете этот модуль, ознакомьтесь с этот метод из исходного кода.

person Lethargy    schedule 22.03.2011