在AEM 6中,HTL中的含量改变/很明显

时间:2018-04-18 08:37:55

标签: aem cq5 sightly aem-6

这是我长期以来遇到过的最奇怪的问题。我有一个在多字段内创建的URL。 URL有一个下划线,例如。 http://example.net/_pinkPanther_is_pink 目前位于 $ {item.link}

当我执行<a href="${item.link}">Click</a> <br> ${item.link}并检查时,它呈现为

    <a href="http://example.net/__pinkPanther_is_pink">Click</a>

 <br> http://example.net/_pinkPanther_is_pink

如果你注意到两个值来自同一个变量,当在锚标记的href中使用链接时,有一个双下划线由上帝知道谁在example.net /

之后

有没有人知道到底发生了什么?

1 个答案:

答案 0 :(得分:4)

由显示上下文感知XSS保护引起的。 Sightly / HTL会自动检测HTL表达式的显示上下文,使用其在HTML页面结构中的位置来检测它。

例如,如果表达式出现在将在呈现文本时生成文本的位置,则表示它位于text上下文中。如果在属性的值内找到它,则说它位于attribute上下文中,依此类推。有关htl specification页面中的上下文的更多信息。

在您的示例中,href属性中的隐式上下文为uri,而在后一种情况下为text

为了覆盖此行为,您可以显式设置上下文,如href="${item.link @ context='text'}