如果您想在localStorage
中存储与用户相关的数据(例如,因为多个用户可以为您的网站使用相同的浏览器),您通常如何处理这种情况?
让我们想象一下,我能够在前端识别用户类似userId
的内容。我可能会做以下事情:
// retrieve the data
data = JSON.parse( window.localStorage.getItem( userId ) ) || {};
// persist the data
window.localStorage.setItem( userId, JSON.stringify( data ) );
这是一种天真的做事方式吗?
修改 根据@MДΓΓБДL及其他评论稍微考虑之后,让我们假设数据是敏感的。在这种情况下,上面的例子确实是天真的。在这种情况下如何处理敏感数据的任何想法?或许是答案:不要这样做,把它保存在后端?
答案 0 :(得分:4)
敏感数据几乎不应存储在客户端上。除非您能保证计算机的物理安全性和/或保证该计算机上的登录用户只能使用计算机(两者通常都不是真的),否则不要将敏感信息存储在客户,如果你可以避免它。
将敏感信息存储在服务器上并且在将该信息提供给浏览器之前需要适当的登录凭据要安全得多。然后,您可以控制服务器上数据的物理安全性,并防止任何用户访问不属于他们的数据。此外,您可以使用SSL保护它。
如果您确实要在本地存储仅供一个用户和一台计算机以及该计算机上的一个浏览器使用的内容,则可以提示输入密码并使用该密码加密/解密存储在本地存储中的数据。除了临时的离线活动之外,我目前还不确定为什么这会比将其存储在服务器上更好的用户体验,无论他们如何访问互联网,该服务器都可以使用该服务器。在移动访问,平板电脑访问,笔记本电脑访问等方面......似乎趋势更多的是将内容存储在云中,以便给定用户可以通过他们可能使用的任何互联网访问方式访问他们的数据而不是要求他们使用完全相同的计算机。