web-dev-qa-db-ja.com

[パスワードを保存する]チェックボックスはどのように機能しますか?

「パスワードを記憶する」という小さなチェックボックスが付いた多数のログインフォームがあり、次回ウェブサイトにアクセスしたときに、ブラウザがパスワードフィールドに自動的に入力します。

しかし、Chrome/Firefoxなどの最新のブラウザーでは、特定のWebページに「パスワードを保存する」チェックボックスがなくてもユーザー名/パスワードを保存する通知バーが表示される動作に気付きました。

私の質問は次のとおりです。

  1. ログインフォームに「パスワードを保存する」チェックボックスを配置する必要がある場合、ユーザーがチェックしたときに何をする必要がありますか?つまり、パスワードをブラウザのCookie(またはローカルストレージ)に保存する必要がありますか?その場合、パスワードは暗号化するか、プレーンテキストにする必要がありますか?
  2. 「パスワードを保存」通知バーはブラウザの機能ですか、それともWebページから呼び出す方法はありますか?
31
Veera

「パスワードの保存」の部分は、<input type="password">本当にパスワードを要求しているように見えます。 autocomplete属性を使用して、ほとんどのブラウザーでこれを抑制することができます。

<input type="password" name="password" autocomplete="off">

これは検証されませんが、通常は問題ではありません。

「私を記憶する」部分は、ブラウザのパスワードマネージャーから完全に分離されています。 「remember me」フラグはサーバーのビジネスであり、送信するCookieの有効期限をいじるだけです。サーバーは常に、Cookieを送信します(セッションを追跡するためにCookieを使用していない場合を除きますが、それはまれであり、とにかく "記憶"する必要はありません)。

「remember me」にチェックマークを付けると、持続セッションが必要であることをサーバーに伝えています。これを実現するために、サーバーにはCookieに有効期限が含まれ、その有効期限は将来のいずれかの時点になります。日付が来ると、ブラウザは期限切れになり、Cookieを削除します。 Cookieがないと、サーバーはあなたが誰であるかを知ることができず、再度ログインする必要があります。

「記憶」をチェックしない場合、セッションCookieが取得されます。セッションCookieには有効期限がないため、ブラウザーが終了すると自動的に有効期限が切れます。セッションCookieは共有マシンに役立ちます。

エグゼクティブサマリー:

  • 「パスワードを保存」は、ブラウザのパスワードマネージャーからのものです。
  • 「Remember me」は、ログインCookieの有効期限に関するものです。

あまりにも長く巻き込まれて申し訳ありませんが、他の答えには混乱と明確性の欠如があるようです。

74
mu is too short

質問1:

  1. セッションIDはCookieに保存されます。知る限り、パスワード、またはそのハッシュは保存されません。ログインすると、サーバー側でセッションが作成されます。「Remember Me」にチェックマークを付けてログインした場合、サーバーはセッションID(または暗号化されたセッションID、またはユーザーセッションを一意に識別するもの)とクッキーはクライアント側に保存されます。
    次回ログインするとき、サーバーはセッションにCookieが存在するかどうかを確認し、存在する場合(およびセッションが強制終了/期限切れになっていない-以下のポイント2を参照)、サーバーはユーザーを識別します「Veera」として、サイトに移動できます。

  2. 多くのWebサイトでは、「すべてのセッションをログアウトする」オプションが提供されています(Gmailなど:ウィンドウの下部を参照)。これにより、ユーザーに関連付けられているすべてのセッションが無効になります。

質問2:
パスワードの保存は、ブラウザが提供する機能です。ブラウザは、<input type=password>ページに表示され、このパスワードを保存するように求められます。どれか <input type=password>はこれをトリガーします。

あなたを記憶しているサーバーとパスワードを記憶しているブラウザの違いは、パスワードが保存されているかどうかです。また、「すべてのセッションをログアウトする」オプションと組み合わせると、ブラウザにパスワードを保存させるよりもはるかに優れています。

2
Nivas
  1. ユーザーが誰であるかを知る方法が必要です。通常、これは、ユーザーのブラウザーにCookieを保存することによって行われます。簡単にスプーフィングされないもののみを使用する必要があるため、暗号化を使用する必要があります。 couldローカルストレージを使用します。ただし、サイトで使用されるすべてのブラウザーがサポートしていると確信している場合に限ります。

  2. いいえ、ありません。通常、パスワードフィールドを持つことがバーをトリガーします。

0
Oded
  1. はい、クッキーを使用する必要があります
  2. これはブラウザの機能であり、トリガーする方法はありません
0
Ergec
  1. それを行う通常の方法は、クライアント側で暗号化されたパスワードを持つクッキーでなければなりません
  2. 私が言っていることは完全にはわかりませんが、ユーザーの観点から、ブラウザはページ上のパスワード入力の存在に基づいて内部のパスワード保存ダイアログを表示する必要があるかどうかを判断しているようです。そのため、ページに標準パスワードを入力している限り、ブラウザはユーザー/パスワードの組み合わせをデータベースに追加しようとします。
0
Valentin Rocher