2011-10-22 6 views
2

今日の午後、私は非常に面白いことに気づきました。私はブラウザのキャッシュとクッキーをクリアするとすぐにTwitterが私にサインします。Twitter.comはキャッシュクリア後にどのようにユーザーをログアウトしますか?

Javascriptを使用して1秒ごとに認証Cookieをポーリングしているとみなし、Cookieがない場合はユーザーにサインアウトします。これがどのように行われるかについての他の推測はどれですか?

これは私がこの動作に初めて遭遇したので、どのように一般的であるか、それを達成するための最良の方法、およびそれが実装されている場合のセキュリティ上の懸念があると思います。

答えて

3

サイトにログインしていることがわかっている唯一の方法は、ブラウザが後続のリクエストで送信するCookieを使用する方法です。クッキーがもはや存在しない場合、定義により、あなたはそのサイトにログインしなくなります。

私はあなたが「それを達成するための最良の方法」について何を求めているのか正確には分かりません。正確に何を達成するための最良の方法はありますか?

ブラウザがCookieを介してログインしている状態を維持することをお勧めする場合は、セッションまたはユーザーIDをCookieに保存することになります。セッションIDは、各「セッション」ごとに異なる値であるため、非常に好ましいです。

セキュリティのためにCookieを使用する方法については、ほとんどどこにでもあります。クッキーがセッションIDを格納するために使用されない唯一の時間は、セッションIDがクエリ文字列に現れる場合です。

セキュリティ上の問題が発生しました。通常、これらのクッキーの寿命は非常に限られているため、ブラウザーセッションを閉じると、ブラウザーを閉じるとクッキーの有効期限が切れます。サイトがsslを有効にしている場合、クッキーの内容は暗号化されて渡されます。もしそうでなければ、真ん中の攻撃やパケットキャプチャ攻撃では、人間に対する防御はありません。 (火災を調べる)。

+0

私の質問は、次に認証クッキーを確認する最良の方法になると思いますか?それは、推奨される練習、それを監視するための間隔などありますか?これは私が知る限り、かなりまれな動作です。ほとんどのサイトはクライアント側でクッキーをアクティブに監視せず、新しい要求が認証されているかどうかにのみ関係しています。 –

+0

@Derek Hunziker:彼らはクッキーを監視していません。 Twitterはajax経由でサーバーにリクエストを返します。各リクエストは定義上、クッキーを渡します。クッキーが存在しない場合は、再度ログインする必要があります。ここでは魔法はありません。 – NotMe

+0

@Jeff Ferland:あなたは正しいですが、私が何を考えていたのか分かりません。更新された答え。 – NotMe

3

あなたがTwitterを開いている間に、いくつかのjavascriptコードが定期的に新しいツイートのためにサーバーをポーリングします。何が起こったのかは、キャッシュをポーリング時間に非常に近づけてしまったためです。実際にはスケジュールされた投票であったときに、キャッシュのクリアがログアウトしたようです。あなたがあなたのクッキーをクリアしたので、twitterがつぶやきを確認するために行ったときに、そのリクエストにログインクッキーがなく、サーバーがあなたをログアウトしました。

私はこれをテストしましたが、私がクッキーをクリアすると、ツイート者がつぶやきを得るまで何も起こりません。

関連する問題