1台の PC で一度に 1 つの認証セッションしかできないPHP Web アプリケーションを作成したい。つまり、ユーザー AはFirefoxを使用してログインするが、ユーザー Bは同じ PC でIEを使用してログインできない。
サーバー側から要求された場合、ブラウザ間のセッション共有はできません
ユーザーがすでにログインしているかどうかをログイン時にチェックするように、ログイン スクリプトを作成できます。ログインすると、それ以上のログインは拒否されます。
上記のように、PHP はセッション ID をデータベースに保存できます。データベースの存在を確認し、それに基づいて許可または禁止します。
デバイスを識別する署名アルゴリズムを使用して、このタスクを実行できます (User-Agent やその他のトリックをスプーフィングしようとしない一般ユーザーとの作業を想定しています)。アルゴリズムには、適切と思われる数の変数を含めることができます。
たとえば、REMOTE_ADDR、USER_AGENT などです。その他の特別な変数は、クライアント側でフラッシュ ベースのコードを実行することによって取得できます。リクエストが来るたびに、それを認証済みの既存のキーと比較できます。ブラウザ文字列を除くすべての変数が一致する新しいセッションを取得した場合は、別のブラウザを使用している同じユーザーであると安全に想定できます。
これを機能させるには、Flash コンポーネントを使用して追加の変数を収集する必要があります。$_SERVER で利用できる変数では不十分です。プロキシの背後にユーザーがいる可能性があり、それらを誤検知として識別したくないためです。