Loading
B2C Commerce 入门
B2C Commerce 中的跨站点脚本攻击

B2C Commerce 中的跨站点脚本攻击

跨站点脚本攻击 (XSS) 使攻击者能够将客户端 JavaScripts 注入目标用户查看的网页。为防止通过内容操控进行恶意攻击,必须对所有用户提供的内容正确编码。

例如,在处理用户输入的数据时,请密切注意如何使用 Salesforce B2C Commerce Internet Store Markup Language (ISML) 模板和脚本 API。

ISML 模板提供了两种打印变量值的方法。可以使用 ${...} 并将省略号替换成要显示的变量,或者 您可以使用 <isprint>标签。

如果在 ISML 模板中使用诸如 ${pdict.ProductSearchResult.searchPhrase} 的脚本表达式,其中的内容类型设置如下,则脚本结果自动进行 HTML 编码。

<iscontent type="text/html" charset="UTF-8" compact="true">...</iscontent>

但是,如果在通过<isinclude template=">包括的 ISML 模板中使用相同的表达式,并且未在包括的 ISML 片段中设置内容类型,则 B2C Commerce 假定内容类型为 text/plain,并且不进行 HTML 编码。这是不一致的,可能导致 XSS 问题。

若要更正此问题,必须显式设置内容类型或使用 <isprint value=“{}”/> 以确保对生成的 HTML 进行编码。

下面是一个不安全的<isprint>标签的示例。

<isprint value="${pdict.ProductSearchResult.searchPhrase}"/>

不要对场景使用 HTML 编码。isprint 标签有一个编码属性对用户输入的数据进行编码。下面是一个使用<isprint>标签的安全示例。

<isprint value="${pdict.ProductSearchResult.searchPhrase}" encoding="jshtml"/>

总之,仅对其各自设计的上下文使用适当的编码。

 
正在加载
Salesforce Help | Article