跨站点脚本保护已关闭

时间:2018-10-22 19:55:59

标签: jsp aem htl

我在演示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保护的目的是什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

HTL具有内置的XSS保护。

使用context = 'unsafe'时,它将完全禁用转义和XSS保护。禁用“ XSS”保护后,您的站点可能容易受到跨站点脚本的攻击。 这是为什么HTL优于传统JSP的原因之一。


话虽如此,有时HTL提供的其他上下文都不适合您的需求,而使用unsafe上下文将是最后的选择。您发布的代码段就是这样的一个例子。 您正在将参数(类别和模式)传递给初始化BINDINGS_CATEGORIESBINDINGS_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

的更多信息