我使用 Handlebars ,如果处理了转义字符(例如'
),它将在屏幕上呈现为'
。
我知道将变量包装在三重存储中将防止这种情况。
我在三重存储中处理了以下字符串,以进行快速测试,这似乎很好:“<p>hello<p>
不会'
t”这完全显示了我想要的屏幕。
我的问题是,简单地将所有变量包装在三重存储中是否安全?还是会有一些我没有考虑过的不可预见的后果?
谢谢
最佳答案
默认情况下,所有在 Handlebars 中双重填充的{{var}}
嵌入都将被HTML转义。出于安全原因执行此操作是为了避免DOM XSS漏洞。因为您的变量可能包含任何数据,包括用户数据或任何类型的不受信任的数据。
在某些情况下,您将需要按原样嵌入数据,而不进行转义。在哪里使用了triple-stash {{{var}}}
。但是每次这样做时,您都需要考虑数据中可能包含的内容,您是否可以信任它?
在Handlebars网站上了解有关HTML Escaping的更多信息。