我们目前的任务是为使用 RESTful API 的移动应用程序通信实现(最好是简单的)身份验证系统。后端具有用户特定的数据,由用户的电话号码标识。我试图更多地了解一般的安全性、存在的不同方法以及它们为何以它们的工作方式工作。
我想到了一个简单的身份验证系统:
- 客户端向 api 发送验证请求,其中包括他们的电话号码和生成的 guid。
- 服务器向手机号码发送一条带有验证码的短信。
- 客户通过发送他们唯一的 guid、电话号码和验证码来验证他们的设备。
- 服务器以某种访问令牌进行响应,客户端可以将其用于进一步的请求。
我有以下问题:
这种方法有什么重大缺陷吗?假设我们使用 HTTPS,发送未加密的数据是否足够安全?访问令牌可以安全地存储在移动设备上,以便只有我们的应用程序可以读取它们吗?还有什么我们没有想到的吗?
我们已经想到,当手机被盗或以其他方式受到损害时,数据不再安全,但这是一个难以克服的风险。访问令牌可能暂时有效,以尽量减少这种风险。
我假设这种方法很简单,并且某处存在巨大缺陷:)你能启发我吗?