【问题标题】:Practice in managing session in modern mobile application现代移动应用会话管理实践
【发布时间】:2016-09-05 02:39:42
【问题描述】:

我是一名网络开发人员,我在大学学习如何使用 SESSION(更准确地说是 COOKIES)来管理用户会话。但是,当涉及到移动应用程序时,我对如何实现系统以确保系统安全,同时遵循应用程序的正常做法感到困惑。

我首先感到困惑的是我应该如何将会话存储在应用程序中。例如在 PhoneGap 中它没有 COOKIES,必须使用本地存储来模拟 COOKIES 行为。我问了一些在开发原生应用程序领域的朋友。他们还提到,在 Android 中,他们大部分时间都使用共享首选项和具有类似技术的 iOS 来存储用户数据。

  1. 这是否意味着在移动应用程序中我不应该使用 COOKIES 而应该将会话数据的管理转移到应用程序级别?我应该将会话存储在应用程序存储中吗?这是我想问的第一件事。

第二件事是关于会话更新。对于一个网站,一个常见的(和简化的)会话验证例程是这样的:每当用户请求一个新页面时,它将首先验证用户提供的会话。然后旧会话被更新,并存储在 COOKIES 中。下次用户将请求具有新会话的页面。如果会话过期,用户会被重定向到再次登录。

但是,这可能不是 100% 适合当今应用程序世界的样子。至少我很少(实际上从我的经验来看从来没有)完全从应用程序中退出(例如 Facebook、Dropbox、Instagram)。我不太确定他们的会话是如何工作的。但是通过观察这种行为,似乎暗示那里没有会话过期策略。这就是我感到困惑的地方,因为我在安全课程或 OWASP 中学到了这应该是一个安全威胁。

  1. 那么我想问的第二件事来了:在工业实践中,移动应用环境中的会话过期策略是如何设计的?会话是否会持续到用户下次再次打开应用程序?此外,作为开发人员,我应该如何设计会话以保证安全性,同时又不会创建糟糕的用户体验?例如,如果用户在几天不使用应用程序时必须重新登录,他/她肯定会不高兴。

当然,安全性是一个很大的话题,不可能在一个答案中提及所有细节,但总体情况以及我可以开始挖掘的一些材料可以解决我的问题。

谢谢。

【问题讨论】:

    标签: android ios cordova session cookies


    【解决方案1】:

    我有使用银行应用程序的经验,我们在登录时(手动)存储一个会话密钥,用于验证每个 Web 服务调用,服务器处理该密钥是否有效,如果无效,则返回一个注销响应,这将导致您将被引导出应用程序以登录屏幕(就像您提到的那样,标准的东西)。我们还有一个计时器,如果应用程序(和服务器端,使会话无效)不活动,它将自动注销。因此,对于更高安全性的应用程序,用户登出的次数会比 Facebook 多得多,如果您的 Facebook 帐户被盗,您不会(很可能)失去生计。

    所以这真的取决于你需要什么。 Facebook 依靠广告获得收入,因此希望其用户能够轻松进入他们的应用程序以获得最多的浏览量(牺牲安全性,但我想在手机上,无论如何你至少需要指纹或密码某种形式的身份验证,即使它不是 facebook 自己做的)。而银行应用程序的优先级是安全性,因此每次都强制用户登录等(以及最重要的 2fa)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-23
      • 2014-01-24
      • 2011-12-12
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多