Javascript 在浏览器中存储敏感数据,因此其他网站无法访问

Javascript 在浏览器中存储敏感数据,因此其他网站无法访问,javascript,cookies,encryption,browser,local-storage,Javascript,Cookies,Encryption,Browser,Local Storage,如何将敏感凭据放入浏览器中,以便网页上的javascript可以访问它们,而不是服务器或其他网站 我正在建立一个网站,向用户显示AES加密消息。消息通过API检索并存储在我的服务器上。用户可以登录并在浏览器中输入要解密的密钥,如下所示: $document.on提交、解密表单、函数E{ e、 防止违约; var key=$key.val;//通过表单输入div检索密钥 var iv=key.substring32;//初始化向量是用户提交的密钥的一部分 var encrypted=$messag

如何将敏感凭据放入浏览器中,以便网页上的javascript可以访问它们,而不是服务器或其他网站

我正在建立一个网站,向用户显示AES加密消息。消息通过API检索并存储在我的服务器上。用户可以登录并在浏览器中输入要解密的密钥,如下所示:

$document.on提交、解密表单、函数E{ e、 防止违约; var key=$key.val;//通过表单输入div检索密钥 var iv=key.substring32;//初始化向量是用户提交的密钥的一部分 var encrypted=$message.attrchypted;//从服务器获取的加密消息已作为属性添加到div中 var decrypted=CryptoJS.AES.decryptocrypted,key,{iv:iv};//消息已解密 $message.htmldecrypted;//解密的消息将显示给用户 }; 我注意到,零知识电子邮件提供商将您的PGP密钥对放入浏览器中,并使用您的凭据进行解密,即使您刷新网页或将URL复制/粘贴到同一浏览器选项卡中,也可以保留敏感凭据,但如果您将URL粘贴到新选项卡中,则不会。他们的源代码很复杂,但对我来说太复杂了

这让我觉得我必须能够以某种方式保护敏感凭据,甚至为在同一浏览器选项卡中浏览我的网页的用户保留数据,而无需通过我的服务器发送数据

讨论主题,但没有规范/具体的答案。也有,但评论主要是关于OP为什么需要在浏览器中存储感知数据。

Web存储是特定于源的。如果我的源站在那里存储数据,那么你的源站就无法从那里读取数据

Cookie也是特定于站点的,可以是特定于路径的,但是Cookie是通过网络传输的,现在web存储得到了非常好的支持,并且有了更好的API,因此没有真正的理由使用Cookie来实现这样的目的,至少有两个非常好的理由不这样做


请注意,没有任何东西阻止最终用户通过浏览器的内置开发工具查看web存储或Cookie中的内容。但正如您所说的,所讨论的密钥是用户自己的,可能这只是一个问题,如果有人获得对其机器的访问权…

存储在cookie、会话、本地存储中的数据可供用户通过调试工具或其他方式访问


您只能选择强加密,这很难解密,但在某些情况下是可能的:-

您的主要选项是和cookies。请注意,浏览器的用户可以访问密钥,但这在您的情况下可能没问题。可能在cookie中包含令牌?您应该以加密格式存储敏感信息,在您共享私钥之前,没有人能够解密。请解释:很难解密,但在某些情况下是可能的。谢谢您的回答。您指的是web存储,但正如我所读到的,有不同种类的web存储。您的MDN链接专门用于本地存储,是吗?如果是的话,你可以提交几行代码供参考吗?据我所知,这可以通过localStorage.setItemkey,123;和localStorage.getItemkey;,但我需要确定这是正确的方法。@ChristofferJoergensen:Web存储由本地存储和会话存储组成。它们之间唯一的区别是过期:会话存储在会话结束时过期请参阅规范了解会话是什么,localStorage则不了解。就你所说的,我怀疑你想要本地存储。@T.J.Crowder,谢谢你的伟大的anwser!一个简单的问题。浏览器扩展呢?他们可以访问任何页面的web存储。因此,如果用户安装了恶意扩展,则该扩展可以访问保存在web存储中的数据。我说得对吗?有什么解决办法吗?@EugeneEpifanov:对,可以在页面上下文中运行代码的扩展确实可以进入页面的web存储。问一个问题,如果还没有被问到的话,可以做些什么(如果有的话),这可能是一个好问题。