現在、RESTful API を使用したモバイル アプリケーション通信用の (できれば単純な) 認証システムの実装を任されています。バックエンドには、ユーザーの電話番号で識別されるユーザー固有のデータがあります。セキュリティ全般、さまざまな方法、およびそれらが機能する理由についてもっと理解しようとしています。
簡単な認証システムを考えました:
- クライアントは、電話番号と生成された GUID を含む検証要求を API に送信します。
- サーバーは、確認コードを含む SMS メッセージを電話番号に送信します。
- クライアントは、一意の GUID、電話番号、および確認コードを送信して、デバイスを確認します。
- サーバーは、クライアントがさらなるリクエストに使用できる何らかのアクセス トークンで応答します。
次の質問があります。
このアプローチに重大な欠陥はありますか? HTTPS を使用すると仮定すると、暗号化されていないデータを送信するのに十分安全でしょうか? アクセス トークンをモバイル デバイスに安全に保存して、アプリだけが読み取れるようにすることはできますか? 他に考えていないことはありますか?
携帯電話が盗まれたり、その他の方法で侵害されたりすると、データが安全ではなくなることはすでにわかっていますが、これは克服するのが難しいリスクです。このリスクを最小限に抑えるために、アクセス トークンを一時的に有効にすることができます。
私は、このアプローチが単純であり、どこかに大きな欠陥があると仮定しています:)教えてもらえますか?