我正在寻找一种在我的 URL 哈希中存储一些 javascript 变量的方法。我的目标是允许用户使用书签来恢复 Web 应用程序的特定状态。
我突然想到一种方法可能使用 JSON 序列化。即,我会像这样存储我的变量
var params = { var1: window.val1, var2: window.val2 }
window.location.hash = JSON.stringify(params)
并像这样恢复它们
var paramStr = window.location.hash.substring(1) // substring removes the initial "#"
var params = JSON.parse(paramStr)
window.var1 = params.var1
window.var2 = params.var2
这似乎是做我想做的最简单和最简洁的技术。这对我来说很容易理解,并且它使用的代码行数比这个流行的 SO 建议少。然而,它也感到不安全。恶意用户可以将任意代码写入 url,我的应用程序会执行它。这似乎很危险,但我对网络编程很陌生,所以我不知道这有多大意义。
我上面概述的用于存储变量的技术是否可以window.location.hash
安全使用?如果不是,为什么不呢?可能发生的最坏情况是什么?