14

大学の「学習システム」であるサイトにログインすると、同じサイトを開いたまま新しいタブを開くことができません。そうすると、どういうわけかサイトが認識して次のメッセージが表示されますか?

セッションはすでに実行中ですか?

コンピューターでどのタブを開いているか、一体どうやってサイトが知るのでしょうか? 私の知る限り、フロントエンド コードは私のプライベート ブラウザー情報にアクセスするべきではありません。別のタブを既に開いていると判断するために、このサイトが使用できるアクセス可能な情報は何ですか?

個人のコンピューターを使用してサイトにアクセスしていますが、アクセスしているサイトはローカル ネットワーク上ではなく、インターネット経由でアクセスしています。したがって、これを引き起こす可能性のある内部監視ソフトウェアはありません。Mac 版 Google Chrome 24 Beta を使用しています。

4

2 に答える 2

5

これを行う 1 つの方法は、Cookie と ID を使用することです。まず、サイトにログインし、そこでセッションを行います。これは Cookie を使用して管理されます。サイトのページにアクセスするたびに、ブラウザは通常、何らかの ID を含む Cookie を送信します。そうすれば、サーバーはあなたからのリクエストを識別できますが、それは本当にあなたからのものです。したがって、この場合、元のタブと新しいタブの両方が同じ Cookie を送信します。

次に、別の異なる ID (ページ ID と呼びます) を、サイトで送信するリンクまたはフォームに追加することもできます。そのため、ページ上のフォームに ID 1234 が含まれる場合があり、リンクにもその ID が含まれます。アクセスする新しいページごとに、新しい ID が含まれている場合があります。そのため、サイトはいつでも、ブラウザからの次のリクエスト (Cookie によって識別される) にもこの別の ID が含まれている必要があることを認識しています。通常の方法でサイトをナビゲートし、リンクをクリックし、フォームを送信すると、これが当てはまり、すべてがうまくいきます.

次のリクエストが期待される 2 番目の ID を送信しない場合は、次のとおりです。

  1. 戻るボタンを押します (古いページ ID を送信することになります)
  2. 新しいタブを開きます (これはブラウザーによって異なりますが、元のタブで既に開いている同じページを開く場合、サーバーが期待する次のページ ID ではなく、現在のページ ID を送信します)

いずれにせよ、サーバーが予期しないページ ID を指定してリクエストを送信すると、サーバーはあなたが何をしたかについて最も適切な推測を行うことができます。

于 2012-11-19T14:11:04.467 に答える