10

私が抱えている問題は、解決できない可能性がありますが、次のとおりです。

7 ~ 8 か所の異なる場所に 1,500 人以上のユーザーがいる大規模な組織のクライアントがあります。このアプリケーションは、Kohana v3.0 フレームワーク上に構築された PHP アプリケーションです。組織は、ISP レベルでプロキシ フィルタリング サーバーの背後にいます。各場所には、プロキシを介して Web に到達する 1 つのメイン パブリック IP アドレスがあります。各ユーザーは、雇用主から支給された Mac または Windows ワークステーションを持っています。

彼らが経験しているのは、Cookie の衝突のようです。例: 1 人のユーザーが自分のワークステーションにログインし、別のユーザーが同じ場所の別のワークステーションから同じ OS とブラウザーの種類でログインします。2 番目のユーザーは、最初のユーザーと一致する新しく生成された Cookie (トークン) を受け取ることによって、最初のユーザーのアクティブなセッションを受け取ります。これは「authautologin」Cookie (ログイン画面で [remember me] チェックボックスが有効になっている場合に設定) にのみ関連しているように見えますが、プロキシからのキャッシュに対してオプションを開いたままにしています (プロキシはまだキャッシュしています)。

ネットワークの設定により、サーバーは、同じユーザー エージェントを使用して同じ IP アドレスからログインしている何百ものユーザーを認識します。私の最初の考えは、ブラウザー (ユーザー エージェント) に固有の Cookie を生成する Kohana v3 の方法は、この実際のアプリケーションには十分に固有ではないということです。

誰もこのようなことを経験したことがありますか? また、Cookie とセッションの生成で実行する適切なアクションは何でしょうか? データベースで Cookie とアクティブなセッションを管理する方がよいでしょうか?

  • Kohana モジュール: Jelly-Auth、Jelly、および Auth

  • サーバー: Apache/2.2.9 (Debian) mod_fastcgi/2.4.6 mod_jk/1.2.26 PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g

  • 既知のブラウザ: IE 8 & 9、Firefox (OS および Win)、Safari (OS)

4

3 に答える 3

2

うわー、それは厄介な脆弱性です、良いキャッチです!

PHPでCookieを生成する最善の方法は、PHPにそれを実行させることです session_start()。そしてそれがすべてです!独自のCookieを生成している場合は、実際にどこかで混乱しています。$_SESSION[]これで、スーパーグローバルを使用できます。ベストプラクティスはsession_start()、アプリケーションで$ _SESSIONにアクセスする前に、共通のヘッダーファイルを呼び出すことです。

owasp a9、csrf、Cookieフラグ:HTTP_Only、および「セキュア」フラグ(Cookieをhttpsに強制する)など、考慮すべき他の問題がおそらくあります。

于 2011-12-19T16:51:16.527 に答える
2

これは単なるアイデアですが、以前は (Debian と PHP のバージョンによっては) PHP セッションにバグがありました。試してみることをお勧めします:

  1. このリンクを確認してください- これはあなたの問題とは関係ないかもしれませんが、試してみる価値はあります
  2. データベース ドライバーに切り替えます - これですべてが解決する可能性は 90% です
  3. 別の Debian サーバーでテストします - これは簡単に達成できないかもしれませんが
于 2011-12-19T18:14:48.460 に答える
0

正しく理解できたかどうかわかりませんが... リクエストは次のように行われることは理解しました:

ユーザー (ワークステーション) ==> プロキシ () ==> インターネット ==> 会社の Web サイト (および逆方向の応答)。

プロキシが "HTTP_X_FORWARDED_FOR" ($_SERVER スーパーグローバル変数) を設定しているかどうかを確認します。ユーザーのワークステーションの IP アドレスを特定する唯一の方法である可能性があります。もしそうなら、あなたは終わりです。

于 2011-12-27T21:30:07.933 に答える