混合移动应用程序:在客户端存储合理的数据

时间:2016-12-11 15:41:07

标签: cordova security web-applications

我正在使用Cordova框架创建一个Web应用程序。 我的项目组织如下:

root
----- hooks
----- platforms
----- plugins
----- res
----- www
--------- css
--------- img
--------- js
--------- res
--------- spec

在我的js文件夹中,我需要向远程服务器执行https请求以执行登录。在我的应用程序中,我需要尽可能安全地存储SERVER_URL,USERNAME和PASSWORD。

今天,这些数据在我的js文件中直接写成字符串。

将这些敏感数据存储到Web应用程序项目的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

正确的做法是OAuth2。当您的用户首次登录时,他将提供用户名和密码(如果初始身份验证是基于密码的;通常是),然后服务器将为他提供特定于用户和设备的访问令牌。您的应用只会为用户存储访问令牌,而您的应用应将其存储在合理安全的位置,即。移动平台上的钥匙串/密钥库解决方案。请注意,攻击者获取访问令牌仍然是一个非常相关的威胁,所以有时它应该在服务器上失效并发出新的。只要一切按预期进行,这对用户来说可以是透明的。此外,应该有一个工具供用户查看活动访问令牌(也就是他的“设备”),并从他不想再访问他的数据的访问权限中删除访问权限(即,如果是妥协)。作为额外的安全控制,您可以在授予新访问令牌(即添加新设备)等时发送电子邮件。

如果所有这些都没有到位,并且您的用户直接使用他的用户名和密码进行身份验证以接收普通的会话ID,那么您也可以将其视为一种访问令牌。从技术上讲,它毕竟是一种访问令牌。如果需要,您可以将其存储在密钥库中,但是您需要知道它存在风险并且可能被攻击者窃取,在这种情况下,您的用户可能根本不知道或无法使会话无效。如果您减轻这些风险,您最终将获得上述正确的解决方案。 :)

您不应以任何方式在客户端上存储用户的密码。

服务器网址不是(也不应该是)秘密。任何使用该应用程序的人都可以很容易地找到答案。