我有这个Web应用程序,它将成为所有客户端技术(HTML,CSS,JavaScript / AngularJS等)。该Web应用程序将与REST API进行交互,以访问和修改数据。目前,尚不确定REST API将使用哪种类型的身份验证系统。
据我了解,任何类型的API身份验证系统(API密钥,OAuth 1/2等)都将具有某些需要保密的数据,否则可能会损害访问权限。对于API密钥,它们本身的密钥需要保密,对于OAuth 2,客户端秘密/访问令牌/刷新令牌需要保密,我确定OAuth 1涉及的4个密钥中的一些必须保密(不是OAuth 1的经验过多)。我一直在尝试思考是否有一种方法可以将这种秘密内容存储在纯客户端Web应用程序中,而无需在服务器端进行中间层排序。
我一直在尝试考虑这个问题,而我想不起任何地方可以这样做。我的意思是我无法将其存储在javascript中,因为任何人都只能查看源代码或打开控制台并获取数据。我不确定100%localStorage的安全性以及用户是否可以访问/修改该数据。即使本地存储是安全的,我想到的将数据放入其中的两种方法也不是。一种方法是仅将数据存储在javascript源代码中,这是我能想到的最不安全的事情。现在,如果我使用的是OAuth 2之类的东西,其余的api本身会给我令牌,那仍然不是那么安全(比第一个选项好),因为这些令牌将以纯文本形式返回,任何人都可以看到计算机正在查看的请求。
有没有办法让完全运行客户端的应用程序能够安全地存储秘密数据,而无需在服务器端设置某种中间层?