Как внести теги в белый список с помощью Google Caja HTML Sanitizer под node.js?

Я использую пакет npm Caja-HTML-Sanitizer под node.js.

Я могу дезинфицировать ввод html с помощью функции sanitizer(), но как мне использовать белый список, чтобы разрешить только определенные теги (например, p br strong)?

Спасибо!


person SrgHartman    schedule 03.08.2013    source источник


Ответы (1)


Этот пакет не выглядит актуальным — фактическому файлу дезинфицирующего средства не менее трех лет (согласно временной метке git). Я бы не рекомендовал использовать эту версию.

К сожалению, в настоящее время у дезинфицирующего средства нет параметра, который просто предоставляет альтернативный белый список. (Есть причины, по которым это может измениться в будущем, но пока этого не произошло.)

  • Самый простой способ изменить встроенный белый список — это получить исходное дерево Caja, изменить src/com/google/caja/lang/html/*-whitelist.json и перестроить ($ ant); дезинфицирующее средство в той же форме, что и вы, встроено в ant-lib/com/google/caja/plugin/html-sanitizer-bundle.js.

  • Вы также можете настроить поведение напрямую, используя политику тегов. Вместо вызова sanitize(html) используйте sanitizeWithPolicy:

    var basicPolicy = html.makeTagPolicy();
    function customPolicy(tagName, attribs) {
        if (/* whatever additional condition you want */) {
            return basicPolicy(tagName, attribs);
        }
    }
    
    ...
    
    return html.sanitizeWithPolicy(input, customPolicy);
    

    Однако это требует, чтобы вы запрограммировали желаемое ограничение, а не использовали существующую логику белого списка с существующими данными. Он также более чувствителен к возможным изменениям в API дезинфицирующего средства в будущем.

person Kevin Reid    schedule 05.08.2013