我是一名网络开发人员,我从大学学到如何在管理用户会话时使用SESSION(更确切地说是COOKIES)。但是,当谈到移动应用程序时,我很困惑我应该如何实现系统以确保系统安全,同时遵循应用程序的正常做法。
我感到困惑的第一件事是我应该如何将会话存储在应用程序中。例如,在PhoneGap中,它没有COOKIES,必须使用本地存储来模拟COOKIES行为。我问过一些在开发本机应用程序领域的朋友。他们还在Android中提到他们使用共享偏好和iOS以及类似的技术来在大多数时间存储用户数据。
第二件事是关于会议续约。对于网站,常见(和简化)会话验证例程如下:每当用户请求新页面时,它将首先验证用户提供的会话。然后更新旧会话,并存储在COOKIES中。下次用户将使用新会话请求页面。如果会话过期,则会重定向用户再次登录。
然而,这可能不是100%适合当今应用程序世界的样子。至少我很少(实际上从来没有从我的经验)完全退出应用程序(例如Facebook,Dropbox,Instagram)。我不太确定他们的会话是如何运作的。但是通过观察这种行为,似乎意味着那里没有会话到期策略。这是我感到困惑的地方,因为我在安全课程或OWASP中学到了这应该是一个安全威胁。
当然,安全性是一个很大的话题,不可能在一个单一的答案中提及每一个细节,但总体情况和我可以开始挖掘的一些材料可以解决我的问题。
谢谢。
答案 0 :(得分:0)
我有银行应用程序的经验,我们在登录时存储会话密钥(手动),用于验证每个Web服务调用,服务器处理该密钥是否有效,如果不是,则返回退出响应,这将导致你从应用程序启动登录屏幕(就像你提到的那样,标准的东西)。我们还有一个计时器,如果应用程序(和服务器端)无效,会自动注销。因此,对于更高安全性的应用程序,用户会比facebook更频繁地退出登录,如果您的Facebook帐户遭到入侵,您很可能会失去生计(很可能)。
所以这真的取决于你的需要。 Facebook依靠广告来获取收入,因此希望其用户能够毫不费力地进入他们的应用程序以获得最多的视图(牺牲安全性,但我想在手机上,你至少在指纹或密码后面某种形式的身份验证,即使它不是facebook自己做的事情)。银行应用程序优先级是安全性,因此强制用户每次登录等(并且最重要的是2fa)。