Перейти к содержимому
Русский язык для Invision Community 5

Применение библиотеки HTMLPurifier в IPB

Ранее задавался данным вопрос, но так ответа не получил. Сейчас применяю стандартную библиотеку, скаченную с http://htmlpurifier.org/.

 

Хотелось бы лишний раз не нагружать файлами, библиотеками и тд. А применить уже готовую сконфигурированную разработчиками ipb.

 

Необходимо проверить пользовательский html на наличие скриптов, вредоносного кода и тд. Прежде чем добавим его в базу, без сущьностей. В чистом виде html....

 

Соответсвено вопрос к вам, как это сделать применяя готовую сконфигурированную библию от ipb. Возможно ли это сделать и назначение ее немного иное?

Рекомендованные сообщения

Вам же сказали использовать для этого classes_editor_composite. Он специально занимается обработкой текста этой библиотекой где происходит конфигурация htmlpurifier и предварительная обработка текста. Не надо заниматься херней.

  • Автор

Такой вопрос

   $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
   $editor = new $classToLoad();
   $editor->setLegacyMode( false );
   $editor->setIsHtml( false );
   $postContent = $editor->process('<tr date="sa"><td>ds</td></tr>');
   print_r($postContent);

 

Как в ответ получить код такого вида "<tr date="sa"><td>ds</td></tr>", отфильтрованный от вредоносного кода...? Как отключить проверку на наличие правильной структуры кода?

Никак. Пользователи не имеют право использовать таблицы в сообщениях.

  • Автор

Как разрешить использовать? Возможно?

  • Автор

Мужики как разрешить использование таблиц?

  • Автор

Подскажи как выставить разрешение на такие атрибуты как id, class или добавить какой нибудь свой. Блин все удаляет.

 

Не понимаю, как конфиги указываются если использовать ту модификацию что у ipb

 

В стандартной библии есть такая возможность как добавлять свой префикс в начала значения атрибута id, подскажи как проделать тоже самое использую библию от ipb

Подскажи как выставить разрешение на такие атрибуты как id, class или добавить какой нибудь свой. Блин все удаляет.

В IPS Suite 4 классы можно просто добавить в базу:

$myClasses = array( 'myClass_1','myClass_2',...,'myClass_n' );
$settingClasses = \IPS\Settings::i()->editor_allowed_classes ? explode( ',', \IPS\Settings::i()->editor_allowed_classes ) : array();
$settingClasses = array_unique( array_merge( $settingClasses, $myClasses ) );

\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => implode( ',', $settingClasses ) ), array( 'conf_key=?', 'editor_allowed_classes' ) );

Для разрешения элемента по другим атрибутам, включая id, уже нужно работать с яваскрипт:

editor.dataProcessor.htmlFilter.addRules(
{
   elements :
   {
       $ : function( element )
       {
           if ( element.attributes.id == 'myID' )
               return element;
       }
   }
});

Но это, опять же, для 4-ой версии sceditor. С IP.Board 3.x.x не разбирался, там хватало штатных возможностей парсера бб-кодов.

 

как разрешить использование таблиц?
https://community.invisionpower.com/files/file/3520-hsc-table-bbcode/

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.