GmailのCookieを見ると、「remember me」Cookieに何が保存されているかを簡単に確認できます。ユーザー名/ワンタイムアクセストークン。ユーザー名が秘密である場合にも、異なる方法で実装できます。しかし、何でも...それほど高度なセキュリティではありません。あなたはクッキーを盗み、準備ができています。
私の質問は機能面ですが、アクセストークンをいつ消去するのですか?ユーザーがなしでログインした場合、別のマシンで[remember me]をクリックすると、-すべてのマシンのアクセストークンが無効になりますか?これが従来どのように実装されているのか、またどのように実装するのかについて質問しています。
私は定期的に2〜3台のマシンを同時に使用し、それらすべてに「私を覚えている」ようにしています。そのうちの1つが他の接続を切断した場合、それは非常に煩わしいので、お勧めしません。
従来はタイムアウトを使用していましたが、Cookieは一定の時間が経過すると(またはユーザーがログアウトすると)期限切れになります。
それはすべてあなたのセキュリティモデルに依存します。 1人のユーザーが1台のコンピューターを使用することを期待している社内アプリケーションを作成している場合は、Gmailよりも厳しい制限を設定することをお勧めします。
また、サービス拒否の可能性に注意してください。あるマシンでのアクションにより別のマシンが使用できなくなる場合、これは、正当なユーザーが特定のシナリオで制御を取り戻すのを防ぐために使用できます。
記事 永続的なログインのベストプラクティス および 向上した永続的なログインのベストプラクティス は、この種の機能を実装する方法に関する優れたリファレンスです。
StackOverflowの質問もご覧ください
別のマシンからログオンしても、別のマシンのCookieに関連付けられたログインが無効になることはありません。ただし、ユーザーがログアウトした場合、または「ここにログインしていませんか?」と入力すると、ユーザーが作業しているCookieがクリアされます。
ちなみに、httpsを主張し、スクリプトを作成しないようにすることで、Cookieを盗むことを難しくすることができます。
Cookieの出力に「; HttpOnly」を追加すると、JavaScriptでCookieを使用できなくなります。
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838
これについてもっと読むことができます
覚えておいてくださいクッキーはマシンも識別する必要があります。覚えておきたい場所と覚えておきたくない場所があるので、それはマシンに関連しているはずです(自宅vs職場)。
有効期限は通常、妥当な期間(2週間)またはユーザーが明示的にマシンからログオフした後に設定されます。
私がやろうとしていることは、各セッションをIPアドレスにリンクすることです。セッショントークンがそれとは異なるIPから送信された場合は、拒否します。
アクセストークンは、マシン間で簡単に転送できないように、IP固有である必要があります。
また、ユーザーがアクティブなトークンを持っているマシンを確認できるように実装する必要があります。
別のコンピューターで新しいトークンが作成されると、トークンを無効にすることを選択するサイト-ユーザーが複数のコンピューターでサービスにアクセスしないようにするか、アクセスする場合は、その使用方法によって再度ログインすることを正当化することを選択します。
実際に採用するポリシーは、保持しているデータとユーザーのニーズによって異なります。