Renderizando links telefônicos em HTL com base na entrada de um widget Rich Text
Eu tenho um componente usando o widget Rich Text Edit (xtype="richtext"
) no meu projeto usado em todo o site como o componente de texto padrão.
Os usuários gostariam de poder inserir links telefônicos usando otel
Esquema de URI no texto digitado usando este componente.
A caixa de diálogo permite que eles façam isso, mas quando o conteúdo da Rich Text Edit for renderizado em Sightly / HTL posteriormente, ohtml
contexto é usado:
{$text @ context='html'}
Feito isso, o valor do meu atributo é ignorado.
O HTML armazenado no repositório é:
<a href="tel:04242424242">Call us!</a>
E o que é realmente renderizado na página na instância do autor é:
<a>Call us!</a>
no editor, a tag é totalmente removida por causa do verificador de links.
Alterando o contexto paraunsafe
causa ohref
para renderizar, mas não é uma solução que estou disposto a aceitar. O componente é usado em muitos lugares e quero ter certeza de que a proteção XSS é suficiente.
Existe alguma maneira de afetar a maneira como ohtml
contexto em HTL trata links de telefone?
Tentei adicionar uma expressão regular extra à sobreposição deapps/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]+"/>
e mais adiante:
<attribute name="href">
<regexp-list>
<regexp name="onsiteURL"/>
<regexp name="offsiteURL"/>
<regexp name="telephoneLink"/>
</regexp-list>
<!-- Skipped for brevity -->
</attribute>
mas isso não parece afetar a maneira como o Sightly / HTL escapa seqüências de caracteres nohtml
contexto.
Eu também tentei sobrepor as regras xss do Sling localizadas em/libs/sling/xss/config.xml
mas também não teve sorte.
Como pode ser feito?