все!Естественно, я все еще борюсь с 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 перегружает метод 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 => ''…
Любые идеи о том, почему он продолжаетиспользовать белый список, а не использовать конфигурационный файл, который я создал во время выполнения?
Спасибо, как всегда, всем, кто внес свой вклад!