【问题标题】:Hybrid mobile app : Store sensible data on client side混合移动应用程序:在客户端存储敏感数据
【发布时间】:2016-12-11 15:41:06
【问题描述】:

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

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

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

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

将这些敏感数据存储到网络应用项目中的最佳方式是什么?

【问题讨论】:

  • 您要验证您的用户(个人)还是应用程序本身?请注意,后者是不可能的,首先您不要将用户凭据存储在 js 文件中。
  • 这是我要验证的人。登录完成后,我会得到一个 sessionid 作为响应,稍后用于所有请求

标签: cordova security web-applications


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2023-04-01
    • 2016-10-08
    • 2011-06-22
    • 2019-07-30
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多