如何避免localStorage存储的值被修改?

1,002 阅读1分钟

监听localstorage被修改事件,一旦修改,就将对应key的value置为oldValue。

window.addEventListener('storage', (e) => {
  localStorage.setItem(e.key, e.oldValue);
});

加密

这里实际上有误,实际存储的是字符串,但是可以作为一种思路,即:将要存储的键值对包裹起来,加密处理,再存储,如果解密时发现异常,说明被修改过。)

将想要存储的键值对包裹为对象,比如原本想存的key为CityName,value为哈尔滨,现在改为key为AddrInfo, value为{CityName: "哈尔滨"}

将该对象加密

let AddrInfo = {"CityName":"海南"}
localStorage.setItem('AddrInfo', AddrInfo)

这种方法不仅有效防止篡改(仍然可以删除),更使得信息不会暴露出明文。

合无法修改又不会暴露明文,但是无论怎样,始终可以clear的。