サーバーへの安全な通信チャネルを使用している場合(たとえば、SSLを使用している場合)、ユーザー名とパスワードのハッシュを送信できます(SHA-512などの暗号化された安全なハッシュ関数を使用します-実行可能な衝突やプリイメージは知られていません)攻撃)。
ローカルに保存するのは、ユーザー名とパスワードのハッシュです。サーバーへの通信チャネルが安全であるとすると、送信された情報は他の誰にも表示されません(リプレイ攻撃は不可能です)。また、暗号化された安全なハッシュ関数を使用するということは、それが一方向性関数であり、元の入力に「戻る」ことがないことを意味します。
別の方法は、ログインが成功したときにサーバーから認証のトークンを取得することです。次に、プロトコルは、特定の期間内にトークンと組み合わせたユーザーの認証を受け入れることができます。そうすれば、パスワードのハッシュをローカルに保存する必要はなく、ユーザー名とトークンだけを保存できます。したがって、誰かがトークンを取得すると、ある時点で期限切れになります。ただし、正しいユーザー名とパスワードの組み合わせでのみ、別のトークンを使用してトークンを再発行しないでください。さらに、トークンを使用してログインした場合も、ユーザーがパスワードを変更/表示できないようにする必要があります。さらに先に進みたい場合は、トークンを特定のIPアドレスからのみ機能するように制限することもできます。