问题已更新
我正在检查一个用Vue.js编写的客户端应用程序,我发现了以下结构。
// Somewhere else in the code
var data = JSON.parse(jsonString);
// In the vue component
<img :src="require(`@/assets/img/${data.someKey}.png`)">
字符串
jsonString是从客户端自己的服务器返回的,但是如果服务器被破坏,那么这个数据就可以被操纵。
该应用程序运行在电子环境中。
这个构造是否可以安全地假设data.someKey总是包含安全的数据,或者有一些方法可以滥用这个构造并通过require或${}执行XSS?
整个构造非常可疑,客户端的开发人员确信JSON.parse在这种情况下是一个足够的保护。
初始问题
我在JS中有一个如下结构
var data = JSON.parse(jsonString);
`${data.someKey}`
型
jsonString来自一个不可信的源。
这个构造是否可以安全地假设data.someKey总是包含安全的数据,或者有一些方法可以滥用这个构造并执行XSS?
1条答案
按热度按时间yhqotfr81#
除非您使用JSON数据作为原始HTML或属性,例如:
字符串
或
型
很安全。
考虑到Vue,注入原始HTML也很危险:
型
关于你的例子:
型
它是安全的,因为Vue不生成原始的HTML,而是用DOM方法设置属性,这是完全安全的。
你不能在Vue中破坏一个计算属性,它的值被转义了:
型