Skip to content

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

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

 

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

 

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

 

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

Featured Replies

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

  • Author

Такой вопрос

   $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>", отфильтрованный от вредоносного кода...? Как отключить проверку на наличие правильной структуры кода?

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

  • Author

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

  • Author

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

  • Author

Подскажи как выставить разрешение на такие атрибуты как 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/

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.