localStorage保存对象,但不能读取其内容

localStorage to save an object without beeing able to read its content?

本文关键字:读取 但不能 保存 对象 localStorage      更新时间:2023-09-26

我发现了HTML5的"localStorage"功能。据我所知,它只允许保存字符串,所以我们需要使用eval()/JSON来保存对象/函数。

现在我想知道是否有可能保存一个可以用eval()执行但不能读取的字符串。

我想用localStorage。只设置一次setItem,禁用localStorage。并将其替换为类似"localStorage.evalItem"的内容。

这将是防止XSS/MITM的安全方法(在保存函数之后)。

编辑:

详细信息:这个想法是保存类似于:

function aes_encode(string) {
   var salt='unique_salt';
   // aes encoding...
   return salty_encoded_string
}

在访问端的非(源)可读存储主机中。

并且由于每个访问者都创建一次独特的盐,因此可以验证客户端数据。

但是正如James和nwellcome(谢谢!)所说,不可能不去阅读原文。

我不认为"不投票"是正确的,还是这个问题很不清楚?

根据经验,要防止XSS,不要相信来自客户机的数据。

包括本地存储中的任何内容。LocalStorage不像cookie那样具有HTTPOnly标志,从而使Javascript无法访问它。即使是这样,用户也可以使用调试工具来修改它。出于这个原因,我要警告不要在从localStorage获得的任何东西上使用eval()。我鼓励您使用JSON sans eval来读取JSON对象,而不要在函数中使用它。通过使用适当的缓存和离线应用程序,您应该能够完成将函数放在localStorage中所能完成的任何事情。

说句题外话,你描述它的方式
localStorage.evalItem(key).toSource() == localStorage.getItem(key);

所以我不相信你的方法可以阻止任何人阅读如果它可以eval