Я использую пакет npm Caja-HTML-Sanitizer под node.js.
Я могу дезинфицировать ввод html с помощью функции sanitizer(), но как мне использовать белый список, чтобы разрешить только определенные теги (например, p br strong)?
Спасибо!
Я использую пакет npm Caja-HTML-Sanitizer под node.js.
Я могу дезинфицировать ввод html с помощью функции sanitizer(), но как мне использовать белый список, чтобы разрешить только определенные теги (например, p br strong)?
Спасибо!
Этот пакет не выглядит актуальным — фактическому файлу дезинфицирующего средства не менее трех лет (согласно временной метке 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 дезинфицирующего средства в будущем.