基于富文本小部件的输入在 HTL 中呈现电话链接
Rendering telephone links in HTL based on input from a Rich Text widget
我的项目中有一个使用富文本编辑小部件 (xtype="richtext"
) 的组件,该组件在整个站点中用作默认文本组件。
用户希望能够使用 tel
URI 方案将 phone link 插入到使用此组件输入的文本中。
该对话框允许他们这样做,但是稍后在 Sightly/HTL 中呈现富文本编辑的内容时,将使用 html
上下文:
{$text @ context='html'}
完成后,我的属性值将被忽略。
存储在存储库中的HTML是:
<a href="tel:04242424242">Call us!</a>
在作者实例的页面上实际呈现的内容是:
<a>Call us!</a>
在发布实例上,由于 link 检查器,标签被完全删除。
将上下文更改为 unsafe
会导致 href
呈现,但这不是我愿意接受的解决方案。组件用处很多,我想确保XSS防护足够。
有什么方法可以影响 HTL 中 html
上下文处理 telephone links 的方式?
我尝试在 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
上下文中转义字符串的方式。
我也试过覆盖 /libs/sling/xss/config.xml
中的 Sling xss 规则,但也没有成功。
如何做到?
有两个xss保护配置文件:
/libs/cq/xssprotection/config.xml
/libs/sling/xss/config.xml
Sightly使用的是第二个,这意味着你需要在路径/apps/sling/xss/config.xml
上覆盖它
值得一提的是,新配置似乎只有在您的 aem 实例重启后才能应用。
我的项目中有一个使用富文本编辑小部件 (xtype="richtext"
) 的组件,该组件在整个站点中用作默认文本组件。
用户希望能够使用 tel
URI 方案将 phone link 插入到使用此组件输入的文本中。
该对话框允许他们这样做,但是稍后在 Sightly/HTL 中呈现富文本编辑的内容时,将使用 html
上下文:
{$text @ context='html'}
完成后,我的属性值将被忽略。
存储在存储库中的HTML是:
<a href="tel:04242424242">Call us!</a>
在作者实例的页面上实际呈现的内容是:
<a>Call us!</a>
在发布实例上,由于 link 检查器,标签被完全删除。
将上下文更改为 unsafe
会导致 href
呈现,但这不是我愿意接受的解决方案。组件用处很多,我想确保XSS防护足够。
有什么方法可以影响 HTL 中 html
上下文处理 telephone links 的方式?
我尝试在 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
上下文中转义字符串的方式。
我也试过覆盖 /libs/sling/xss/config.xml
中的 Sling xss 规则,但也没有成功。
如何做到?
有两个xss保护配置文件:
/libs/cq/xssprotection/config.xml
/libs/sling/xss/config.xml
Sightly使用的是第二个,这意味着你需要在路径/apps/sling/xss/config.xml
值得一提的是,新配置似乎只有在您的 aem 实例重启后才能应用。