我在演示We.Retail AEM项目中遇到了这段代码:
<template
data-sly-template.include="${@ categories='Client Library categories', mode='optional: JS or CSS, case-insensitve'}"
data-sly-use.clientlib="${'libs.granite.sightly.templates.ClientLibUseObject' @ categories=categories, mode=mode}">
${clientlib.include @ context='unsafe'}
</template>
有人可以帮助我了解在这种情况下关闭XSS保护的目的是什么吗?
谢谢!
答案 0 :(得分:0)
HTL具有内置的XSS
保护。
使用context = 'unsafe'
时,它将完全禁用转义和XSS保护。禁用“ XSS”保护后,您的站点可能容易受到跨站点脚本的攻击。
这是为什么HTL优于传统JSP的原因之一。
话虽如此,有时HTL提供的其他上下文都不适合您的需求,而使用unsafe
上下文将是最后的选择。您发布的代码段就是这样的一个例子。
您正在将参数(类别和模式)传递给初始化BINDINGS_CATEGORIES
和BINDINGS_MODE
的Java类(ClientLibUseObject.java),然后调用include
方法,该方法将这些参数写入{{1 }}对象。
com.adobe.granite.ui.clientlibs.HtmlLibraryManager
提供的方法包括存储在存储库中的js / css文件,并解析类别和相关性。在可用的上下文列表中,没有任何一个可以满足此用例,因此他们使用了HtmlLibraryManager
。
unsafe
可用display contexts的列表。
有关XSS and different ways XSS can be used to attack sites here
的更多信息