注:この問題はiOSアプリのコンテキストで発生しますが、その特定のOSで実行されているアプリに限定されているとは思いません。
私はユーザーデータをサーバーにバックアップするiOSアプリケーションを開発しており、更新されるユーザーが実際に実際のユーザーであることをサーバー側で確認するための最良の方法を見つけようとしています。各ユーザーにはID(uid
)があります。サーバー側に依存しているのがそれだけだとしたら、プロセスは次のようになると思います。
- ユーザーが初めてアプリを実行する
- アプリでアカウントを作成します。これはサーバーと通信して、サーバーでアカウントを作成し、一意の「ユーザーID」(uid)を取得します。
- アプリはこのuidを保存して、サーバーとのその後の通信でユーザーを識別できるようにします
ただし、誰かが自分のiPhoneでアプリをハッキングした場合、ユーザーIDの値を変更すると、すぐに別のユーザーのデータにアクセスしたり、変更したりできるようになります。
私が検討している現在の解決策は、ユーザーが2つの一意のID、uid(自動インクリメントされた数値)と、より長く、より複雑なキー文字列を受け取ることです。したがって、サーバーとのすべての通信は、uidとキーの両方を送信する必要があります。サーバーは、ユーザーがアプリの言うとおりの人物であることを確認するために、それらが一致することを確認します。
したがって、私の質問は2つあります。
- これはこれを達成するための正しい方法ですか?それとも、私が追求すべき他の標準的な方法はありますか?
- これが正しいアプローチである場合、一意のキーを生成するための推奨される方法は何ですか?