25
   
   
Вход
в 2 клика →
19 сентября 2023 г.
MODX Jevix-интерпретирование данных

Это за­ме­ча­тель­ная си­сте­ма филь­тра­ции и ти­по­гра­фи­ро­ва­ния, Раз­ра­бо­тан­ная в Те­ма­ти­че­ских Ме­диа для соб­ствен­ных про­ек­тов (в част­но­сти Ха­б­ра­хабр), ко­то­рая поз­во­ля­ет ре­шить во­прос с филь­тра­ций кон­тен­та.
Она по­мо­жет об­ра­зу­мить кри­во­ру­ко­го ме­не­дже­ра или зло­го скрипт-кид­ди, рас­пи­хи­ва­ю­ще­го вез­де XSS.

Та­ким об­ра­зом на­стра­и­ва­ет­ся Jevix-ин­тер­пре­ти­ро­ва­ние дан­ных:

// Конфигурация - задаем параметры по отдельности

// 1. Задает список разрешенных тегов
$qevix->cfgSetTagsAllowed(['b', 'i', 'u', 'a', 'img', 'ul', 'li', 'ol', 'br', 'code', 'pre', 'div', 'cut']);

// 2. Указывает, какие теги считать короткими (<br>, <img>)
$qevix->cfgSetTagShort(['br','img','cut']);

// 3. Указывает преформатированные теги, в которых нужно всё заменять на HTML сущности
$qevix->cfgSetTagPreformatted(['code']);

// 4. Указывает не короткие теги, которые могут быть пустыми и их не нужно из-за этого удалять
$qevix->cfgSetTagIsEmpty(['div']);

// 5. Указывает теги, внутри которых не нужна авто-расстановка тегов перевода на новую строку
$qevix->cfgSetTagNoAutoBr(['ul', 'ol']);

// 6. Указывает теги, которые необходимо вырезать вместе с содержимым
$qevix->cfgSetTagCutWithContent(['script', 'object', 'iframe', 'style']);

// 7. Указывает теги, после которых не нужно добавлять дополнительный перевод строки. Например, блочные теги
$qevix->cfgSetTagBlockType(['ol','ul','code']);

// 8. Добавляет разрешенные параметры для тегов. Значение по умолчанию - шаблон #text. Разрешенные шаблоны #text, #int, #link, #regexp(...) (Например: "#regexp(\d+(%|px))")
$qevix->cfgSetTagAttrAllowed('a', ['title', 'href' => '#link', 'rel' => '#text', 'target' => ['_blank'], 'download' => '#bool']);
$qevix->cfgSetTagAttrAllowed('img', ['src' => '#text', 'alt' => '#text', 'title', 'align' => ['right', 'left', 'center'], 'width' => '#int', 'height' => '#int']);

// 9. Добавляет обязательные параметры для тега
$qevix->cfgSetTagAttrRequired('img', 'src');
$qevix->cfgSetTagAttrRequired('a', 'href');

// 10. Указывает, какие теги являются контейнерами для других тегов
$qevix->cfgSetTagChildren('ul', 'li', true, true);
$qevix->cfgSetTagChildren('ol', 'li', true, true);

// 11. Указывает, какие теги не должны быть дочерними к другим тегам
$qevix->cfgSetTagGlobal('cut');

// 12. Устанавливаем атрибуты тегов, которые будут добавляться автоматически
$qevix->cfgSetTagAttrDefault('a', 'rel', 'nofollow', true);
$qevix->cfgSetTagAttrDefault('img', 'alt', '');

// 13. Указывает теги, в которых нужно отключить типографирование текста
$qevix->cfgSetTagNoTypography(['code', 'pre']);

// 14. Устанавливает список разрешенных протоколов для ссылок (https, http, ftp)
$qevix->cfgSetLinkProtocolAllow(['http','https']);

// 15. Включает или выключает режим XHTML
$qevix->cfgSetXHTMLMode(false);

// 16. Включает или выключает режим автозамены символов переводов строк на тег br
$qevix->cfgSetAutoBrMode(true);

// 17. Включает или выключает режим автоматического определения ссылок
$qevix->cfgSetAutoLinkMode(true);

// 18. Задает символ/символы перевода строки. По умолчанию "\n". Разрешено "\n", "\r\n" или null (задает автоматически для текущей ОС)
$qevix->cfgSetEOL("\n");

// 19. Устанавливает на тег callback-функцию
$qevix->cfgSetTagBuildCallback('code', 'tag_code_build');

// 20. Устанавливает на строку предворенную спецсимволом (@|#|$) callback-функцию
$qevix->cfgSetSpecialCharCallback('#', 'tag_sharp_build');
$qevix->cfgSetSpecialCharCallback('@', 'tag_at_build');

// 21. Устанавливает на тег callback-функцию, которая сохраняет URL изображений для meta-описания
$qevix->cfgSetTagEventCallback('img', 'tag_img_event');

Ин­фор­ма­ция взя­та от­сю­да.

Поделиться в социальных сетях:

Вы должны авторизоваться, чтобы оставлять комментарии.

Комментарии ()

    Яндекс.Метрика