2

おそらく頻繁に発生するわけではありませんが、UserA がログインしており、アクティブなセッションを持っている可能性があります。次に、ユーザー B がラップトップを手に取り、同じサイトを使用したいと考えています。PHP では、これをテストして許可するか、セッションごとに 1 人のユーザーにすることができます。

私が遭遇した例は、テスト中に userA が自分のプロファイルにログインした後、userB のパスワードをリセットするためのリンクをクリックしましたが、パスワードのリセット ページにアクセスする代わりに、userA のプロファイル ページにリダイレクトされました。これは私がコーディングした方法ですが、家族全員がラップトップを使用している最近では、メールリンクのような場合に各人に独自のセッションを提供する方法を考案する必要があるのではないかと考えています。

編集:このアイデアを完全に放棄することにしました。セッションの保護はユーザーに任せます。

4

2 に答える 2

6

私はこれを投稿して、それがどのように可能であるかを示すだけですが、この手法を決して使用しようとしないことを強くお勧めします. それはセキュリティ問題の全世界を切り開き、ユーザーに提供できる小さな利便性は、それが引き起こす問題によって完全に消滅してしまいます。

そうは言っても、PHP のtrans_sid(「透過的なセッション ID」) サポートを使用できます。このサポートでは、セッション ID が URL に自動的に埋め込まれ、非表示のフォーム フィールドとして使用されます。これにより、ウィンドウ間で共有することなく、それぞれが独自のセッションを持つ複数のウィンドウを開くことができます。

基本的に、Cookie ベースのセッションをオフにして、透過的な ID のみを使用します。PHP は自動的に変更<a href="...">してセッション ID パラメーターをクエリ文字列に追加し、必要に応じて非表示のフォーム フィールドを挿入します。JS コードなどでは動作しませんが、そこに自分で ID を追加できます。

ただし、ここに問題があります。セッション ID が URL とフォームに埋め込まれているため、サイトのページをブックマークすると、そのブックマークがその時点で使用されている特定のセッションに関連付けられます。何かを共有するために URL を切り取って貼り付けると、リンクの送信先にユーザーのセッションが送信されます。サイトから外部へのリンクをクリックすると、リファラーの一部としてセッション ID が送信されます。たとえば、ユーザーが何かを行うたびに屋上からセッション ID を叫ぶため、セッション ハイジャックをまったく簡単に行うことができます。


より簡単な解決策: ブラウザーの「ポルノ モード」を使用して、各ウィンドウに独自の Cookie ストレージがあり、各ユーザーのウィンドウ/セッションを他のユーザーから分離します。

于 2012-12-03T19:22:33.173 に答える
0

私が懸念している限り、クロムとファイアフォックスで可能です(私は他のブラウザを使用していません)。この機能は「マルチセッション」と呼ばれます。

chrome では、chrome://chrome/settings/ に移動し、ユーザーを chrome に追加することで有効にできます。

コムについて:

サーバーは、ラップトップを物理的に使用しているユーザーをどのように認識しますか? 従来の(賢明な)手段では実際には不可能です

サーバーは、セッションを取得するために ID を要求するだけです。技術的には、この ID は Cookie に保存されるため、物理マシンにリンクされます。

于 2012-12-03T19:20:45.057 に答える