私は、Android/iPhoneアプリまたはWebサイトアプリケーションで使用するためのAPIを保護するための手法を検討してきました。
私は好きなテクニックを1つ見つけましたが、それが良いのか悪いのかはわかりません(非常に長いプロセスであることを除けば)。
処理(最初はユーザー側):
最初に、ユーザーのパスワードをハッシュすることによってソルトが作成されます。
次に、要求されたURL(クエリ文字列を介して最後にユーザー名が追加されたもの)とソルトをハッシュすることにより、署名が作成されます。
最後に、ユーザー名と署名をハッシュすることによってトークンが作成されます。
トークンはヘッダー内でサーバーに渡されます(毎回)。
最初のリクエスト:
最初のリクエストは検証エンドポイントに対するものであり、クエリ文字列としてdevice_idを含める必要があります。
同じ処理(上記と同じ)がサーバーで実行され、トークンがユーザーから送信されたものと一致する場合、device_idはデータベースに保存され、将来の参照のためにそのユーザー名に割り当てられます(デバイスIDは要求されたURLにあります)その後、ユーザー名/デバイスを確認するために使用されます。
後続のすべてのリクエスト:
処理はユーザー側で行われる必要があり、サーバーはすべてのリクエストに対して終了します。トークンは毎回異なります(リクエストされたURLが変更されるため)。
まだ記述されていないため、コードは含まれていません。