是否有任何方法可以安全地存储localstorage,例如加密和解密本地存储数据。我不希望其他用户操纵本地存储数据。 如果localstorage无法做到这一点,那么在客户端存储数据的其他方法是什么?
我见过websql,但是也可以通过在控制台中编写查询来轻松操作。
注意:您能否为Angular 2+提供解决方案!
答案 0 :(得分:3)
没有任何方法可以在客户端存储数据,客户端无法操作。
在角度中,您可以在服务中保存数据,但如果用户刷新浏览器,则会清除该数据。
答案 1 :(得分:2)
与其他答案相反,您可以安全地将任何值存储在客户端中,其中"安全"我的意思是客户端不知道该值和/或无法修改该值。存储机制可以是localStorage,websql或其他任何东西。问题是Javascript代码也无法读取和/或修改这样的值,因为很明显Javascript 是您要保护此类数据的客户端。
如果您有服务器端密钥(密钥),则可以使用它来加密(用于机密性)和/或签署(完整性)发送到客户端的任何数据。这就是像Rails这样的框架默认处理会话而没有服务器端持久性并且仍然相对安全的方式。
请注意,简单地加密服务器上的cookie不一定会对其内容进行身份验证(请参阅经过身份验证的加密),而且此类cookie也容易受到重放攻击,您可以使用时间戳或nonce进行重放攻击。如果需要,你必须关心前方保密。所以简而言之,你必须自己照顾好东西,这不是直截了当的,但也不是不可能的。
如果您只对数据进行签名但未对其进行加密,则Javascript可能会对其进行访问,但仍然无法修改。