Рендеринг телефонных ссылок в HTL на основе ввода из виджета Rich Text
У меня есть компонент, использующий виджет Rich Text Edit (xtype="richtext"
) в моем проекте, который используется по всему сайту в качестве текстового компонента по умолчанию.
Пользователи хотели бы иметь возможность вставлять телефонные ссылки, используяtel
Схема URI в текст, введенный с помощью этого компонента.
Диалог позволяет им сделать это, но когда содержимое Rich Text Edit визуализируется позже в Sightly / HTL,html
контекст используется:
{$text @ context='html'}
Как только это будет сделано, значение моего атрибута игнорируется.
HTML-код, хранящийся в хранилище:
<a href="tel:04242424242">Call us!</a>
И что на самом деле отображается на странице экземпляра автора:
<a>Call us!</a>
на издателе тег полностью удаляется из-за проверки ссылок.
Изменение контекста наunsafe
вызываетhref
сделать, но это не то решение, которое я готов принять. Компонент используется во многих местах, и я хочу быть уверенным, что защита XSS достаточна.
Есть ли способ, которым я могу повлиять на способhtml
контекст в HTL относится к телефонным ссылкам?
Я попытался добавить дополнительное регулярное выражение в оверлейapps/cq/xssprotection/config.xml
:
<regexp name="onsiteURL" value="([\p{L}\p{N}\\\.\#@\$%\+&;\-_~,\?=/!]+|\#(\w)+)"/>
<regexp name="offsiteURL" value="(\s)*((ht|f)tp(s?)://|mailto:)[\p{L}\p{N}]+[\p{L}\p{N}\p{Zs}\.\#@\$%\+&;:\-_~,\?=/!]*(\s)*"/>
<regexp name="telephoneLink" value="tel:\+?[0-9]+"/>
и далее:
<attribute name="href">
<regexp-list>
<regexp name="onsiteURL"/>
<regexp name="offsiteURL"/>
<regexp name="telephoneLink"/>
</regexp-list>
<!-- Skipped for brevity -->
</attribute>
но это, похоже, не влияет на то, как Sightly / HTL избегает строк вhtml
контекст.
Я также попытался наложить правила Sling XSS, расположенные в/libs/sling/xss/config.xml
но тоже не повезло.
Как это можно сделать?