2012-02-24 8 views
2
  1. 私が取り組んでいる同じブラウザの新しいタブ(またはウィンドウ)を開いた場合(Firefoxの場合)、同じクライアントと見なされます。サーバ。別のブラウザとは、同じマシンとは別のクライアントを意味します。

  2. しかし、別のブラウザ(IEなど)から同じURLを開いた場合、サーバーはこれを同じクライアントとして識別できません。

したがって、サーバーは内部的にどのようにクライアントを識別しますか?

別のブラウザからでもクライアントを識別し、新しいクライアントと見なさないようにするには、(サーブレットを使用して)Webサーバーからどうやって行うのですか?

+0

あなたが接続するブラウザに割り当てられるセッションIDを使用します。 – Shahzeb

+0

私はサーバーがクッキーを使ってクライアントを区別していると思います。ブラウザでCookieが維持され、異なるブラウザからの同じURLリクエストは異なるものとして扱われますが、2つの異なるTABからのURLは同じとみなされます。これは多くの理由の1つかもしれません。 – JProgrammer

答えて

3

あなたの前提は正確ではありません「私は私が働いている同じブラウザの新しいタブ(またはウィンドウ)を開いた場合(Firefoxのを言います)」。

同じブラウザ(FireFox、Chromeなど)の別のプロファイルを使用すると、別のセッションと見なされます。

私は、サーバやウェブサービスに自分の他のプロフィールを見せないようにプライバシーを守ることができます。ユーザーとして、私はあなたのアプリが私の他のブラウザやプロフィールに問い合わせるという行を越えることはありません。さらに、FF、Chrome、Safari、IEなどは、そのCookieに対して同じストレージスキーマを共有しません。もちろん

、あなたはブラウザ間でクッキーを交換しますデスクトップアプリをハックしようと、多くの時間を過ごすことができます - しかし

  • はどのようにあなたがそれらのクッキーを解読しようとしているので、それは役に立たないだろう?
  • すべてのオペレーティングシステムで同じアプリケーションを作成しますか?
  • 次に、私のシステムにそのクッキー侵入アプリケーションをインストールさせることをあなたに信頼させてくれますか?

あなたの時間は、業界で受け入れられ普及している方法に費やされる方がよいでしょう。

アプリケーションは、ユーザのログイン/認証を持っている場合は、その後、私はあなたのアプリは関係なくどのPC、プロファイル、またはその私が午前世界の一部を私と私の歴史を認識しないようにしたいと思う。

のであなたの質問に対する答えは - ユーザー認証です。

複数のPCまたはブラウザの「セッション」にわたって同じセッションIDを認識するために、サーバーの周りにぶつからないでください。それは、光沢があり、毛むくじゃくしてきつくなる。

ホイールを改造しないでください。 OpenIDまたはOAuth2を使用します。

OpenID-consumerは実装が非常に簡単です。そのままで、openIDの実装に関する文献はあまりありません。しかし、GoogleはOAuthに関する参考文献を十分に出している。

Google Federated login/OAuthも楽しく簡単に実装できます。 GWTでさえ。

質問が残っています - 私が望むのは、複数の「ブラウザセッション」にまたがってセッションを共有するだけで、なぜユーザー認証で問題を複雑にしたいのですか?その理由はセキュリティです。それが社内のアプリケーションであっても。あなたのマネージャーは、会社内の誰もがセッションを偽装する可能性があることを知りたいと思っていますか?

あなたがプロジェクトに慣れてきたら、ユーザー認証ルートから逃げようとしていることは分かりません。そして、あなた自身の安全なセッション認証フレームワークを盛り上げることはありません。

2

これは技術的に不可能です。サーバーはクッキーを設定してクライアントを識別し、ブラウザーはクッキーを共有しません(タブ間でのみ共有するため、異なるクライアントが同じクライアントとして扱われます)。 IPアドレスで識別することができますが、プロキシの背後にあるすべてのクライアントが誤って同じクライアントとして識別される可能性があります。 クライアントを一意に識別するその他の方法は、マシンから情報を取得すること(MACアドレスなど)と、セキュリティ上の理由からブラウザでは許可されていません。

関連する問題