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

我很困惑的第一件事是如何将会话存储在应用程序中。例如,在PhoneGap中,它没有COOKIES,而必须使用本地存储来模拟COOKIES行为。我问过一些在开发本机应用程序领域的 friend 。他们还提到在Android中,他们大多数时候使用sharedpreferences和iOS以及类似技术来存储用户数据。

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

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

    但是,这可能并不100%适合当今的应用程序世界。至少我很少(实际上从我的经验来看从来没有)完全从应用程序(例如Facebook,Dropbox,Instagram等)注销。我不太确定他们的会议如何进行。但是通过观察这种行为,似乎暗示那里没有会话过期策略。这是我感到困惑的地方,因为从安全 class 或OWASP中了解到,这应该是安全威胁。
  • 这是我想问的第二件事:在工业实践中,如何在移动应用程序环境中设计会话过期策略?会话是否持续到用户下次打开应用程序?此外,作为开发人员,我应该如何设计会话以确保安全性,同时又不会创建不良的UX?例如,如果用户每次几天都不使用该应用程序时必须再次登录,则肯定会感到不满意。

  • 当然,安全性是一个大话题,不可能在一个答案中一一列举所有细节,但是我可以全面了解整体情况以及一些可以开始研究的材料,这可以解决我的问题。

    谢谢。

    最佳答案

    我有银行应用程序的经验,我们在登录时(手动)存储一个会话密钥,该密钥用于验证每个Web服务调用,服务器处理该密钥是否有效,如果无效,则返回注销响应,这将导致您获取从应用程序启动进入登录屏幕(例如您所说的标准内容)。我们还有一个计时器,如果应用程序中没有任何 Activity (和服务器端,使会话无效),它将自动注销。因此,对于更多更高安全性的应用程序,用户注销的频率比说Facebook高得多,而如果您的Facebook帐户遭到破坏,您将最有可能失去生计。

    因此,这实际上取决于您的需求。 Facebook依靠广告来获取收入,因此希望其用户能够轻松进入他们的应用程序以获取最多的观看次数(牺牲安全性,但我想在移动电话上,无论如何,您至少要落后指纹或密码才能某种形式的身份验证,即使它本身不是由Facebook自己进行的)。而银行应用优先考虑的是安全性,因此强制用户每次登录(等等)(最重要的是2fa)。

    08-06 01:47