web-dev-qa-db-ja.com

「永続的な」永続的なログインCookieを設定することは悪い習慣ですか?

Railsには、永続的なログインCookie(別名「remember me」Cookie)メソッドのための組み込みpermanentメソッドがあり、クライアントに20年:

cookies.permanent[:remember_token] = remember_token

ただし、多くのWebサイトでは、Cookieの有効期限ははるかに短い期間(3か月または2週間など)に設定されており、その後クライアントは再度ログインする必要があります。

永続的なログインCookieを永続的に保存するように設定することは、本当に著しく悪い習慣ですか?なぜですか、なぜそうではありませんか?それが悪い場合、なぜかなりの数の開発者がそうしているように見えるのでしょうか?Railsは、この手法をサポートする組み込みのメソッドを提供しています.

5
xji

Cookieは、ユーザーが認証情報の提供をバイパスできるため、特別な種類のCookieですが、他のCookieは、ログインしていない(認証されていない)ユーザーとして、閲覧中のページやショッピングカートの内容を追跡するだけです。そのような情報が非公開であると想定される範囲を除いて、本当に危険ではありません。

まず、すべてのプラットフォームにはベストプラクティスではないものがあり、あらゆる種類の理由(下位互換性、慣性など)のためにそれらを持っていると言えます。また、誰もが以前よりもさまざまな攻撃ベクトルにはるかに気づいています。ログインに使用できる情報を保存しているCookieを覚えている場合は、セキュリティと利便性のトレードオフについて慎重に検討する必要があります。

したがって、Cookieを記憶することを考えるときは、少なくとも考慮しなければならないことです。

  • 元のユーザーではないユーザーがブラウザにアクセスできるリスク。たとえば、公共図書館のコンピューターにCookieがドロップされ、1人のユーザーが離れ、次のユーザーが座った場合はどうなるでしょうか。
  • 誰かがCookieをコピーして別のコンピューターで使用することに関連するリスク(特に、社内のコンピューターで記憶Cookieを使用して、パスワードのリセットとポストイットの処理を回避することを目にする問題

  • 誰かがCookie内の認証情報を解読し、それを使用してサイトへのアクセスを取得したり、ユーザー名とパスワードの一部のバージョンが含まれている場合(多くのユーザーが使用していたと思われます)のリスクサイトへのアクセスを可能にするだけでなく、同じユーザーが同じパスワードを使用している他のサイトへのアクセスを許可する可能性もあります。

個人的には、これらの問題や他の問題のために、私は恒久的/ 20年のクッキーを覚えていません。はい、それらはユーザーエラーです(同じパスワードを使用したり、ライブラリで私を覚えていることを確認したりしています)が、発生する人為的なエラーの一種です。言うまでもなく、それはハードウェアの平均寿命を超えています。 20年間ログインしていないユーザーが本当にいる場合は、そのユーザーに資格情報を提供してほしいと思います。 (ログインする場合は、常に新しいCookieを更新して削除する必要があります。私を覚えているアクティブユーザーは、同じCookieを20年間保持しないでください。)

さらに、私を覚えている場合は、パスワード、電子メールアドレス、その他の連絡先情報、eコマースアクティビティを変更するときに、実際の認証を強制する必要があります。

6
Elin