1

PHPセッションのセキュリティに関するすばらしい投稿を読んだ後、ディスカッションから2つの質問があります。

1)$ _ SERVER ['HTTP_USER_AGENT']-これは、ユーザーのブラウザーやその他の詳細に関する情報を取得します。ユーザーは別のコンピューターから自分のアカウントにアクセスできるので、どのように役立ちますか?

2)session_regenerate_id-これはセッションIDを再生成します。どのように使用すればよいですか?セッションがタイムアウトまたは閉じられた後、session_idは削除されますか?

すべてのご協力に感謝します。それぞれの見解と回答に感謝します。

4

4 に答える 4

4

$ _SERVER ['HTTP_USER_AGENT']、この情報は、すべての人に役立つとは限らない特別な機能を使用している場合、またはターゲットオーディエンスのアイデアを取得したい場合に使用できます。これは、ブラウザの機能に関する詳細情報を見つけるためにget_browser()関数を使用する場合にも重要です。この情報を入手することで、ユーザーは自分のブラウザに最も適したバージョンのサイトに誘導できます。

session_regenerate_id、セッションIDの名前を変更しても、古いセッションは削除されず、アクティブなままになり、ハッカーが使用できる可能性があります。これは、セッション固定を防ぐ手段として、新しいセッションの作成中にのみ関数が使用される場合は問題になりません。これは、使用目的です。ただし、前のセッションIDは引き続き使用可能であるため、HTTP_REFERERなどを介したセッションリークを防ぐために、各セッションベースのリクエストで使用すると完全に役に立たなくなります。また、セッションの盗難を防ぐために一部のスクリプトとして「アクション」のIDを変更しても意味がありません。実際、同じユーザーのセッションIDの量が2倍になり、IDを推測するのが簡単になります。

于 2010-12-09T20:05:17.217 に答える
3

User-Agent は、使用されているブラウザーを判別するのに役立ちます。これは、その機能の一部を推測することにつながる可能性があります。たとえば、ほとんどのモバイル デバイスはブラウザのユーザー エージェント ( WURFLを参照) によって正確に識別できるため、サイトの開発者はモバイル デバイスをサイトのモバイル バージョンに誘導できます。

ただし、ユーザーが変更できるため、ユーザー入力の場合と同様に、その値は慎重に検討する必要があります。

session_regenerate_id()セッションを削除しません。ID を新しく作成された ID に変更するだけです。システムによって自動削除されるまで古いセッション ファイルが残ったままになるのを避けるために、オプションの関数パラメーターを に設定して、自分で削除することができますtrue。その使用は、攻撃者がその ID を知り、サーバーに提示することによって既存のセッションのデータにアクセスできるセッション固定攻撃を回避することです。

于 2010-12-09T20:08:47.987 に答える
3

1) セッションはアカウントにバインドされていません。ブラウザー セッションにバインドされています。ユーザー エージェント情報を使用して、他のユーザー エージェントがセッションを乗っ取ろうとしているかどうかを確認できます。ただし、フェイルプルーフではありません。ユーザーの IP アドレス (またはその特定の範囲) などを使用して、ハイジャックの試みをキャッチすることもできます。

session_regenerate_id2)時々電話をかけることで、誰かがセッションをハイジャックする可能性を減らします。これは、セッション ID が URL で渡される場合に特に当てはまります。たとえば、誰かが URL に SID を含むチャットへのリンクを誤って貼り付けたとします。セッション ID を定期的に再生成すると、ID が既に変更されているため、そのリンクを見たユーザーはセッションを乗っ取ることができなくなります。

于 2010-12-09T20:09:52.930 に答える
1

私はあなたの質問にボトムアップで答えようとします: session_regenerate_id() は、あなたのセッション ID を取得した悪意のあるユーザーがあなたのセッションを乗っ取り、あなたのふりをすることができるセッション固定攻撃を防ぐのに役立ちます. セッションを再生成すると、データベースなどで最新のセッション ID を追跡し、最新のセッション ID でのみアクセスを許可できます (ちなみに、セッション ID を頻繁に再生成すると、ユーザーは複数のセッション ID でサイトを閲覧できなくなります)。それ以外の場合は、デフォルトで古いセッションが使用可能になります (session_regenerate_id 関数呼び出しにブール型の true パラメーターを渡さない限り)。

セキュリティに夢中な人の中には、リクエストごとにセッション ID を再生成することを提案する人もいますが、リクエストごとに増加するセッション変数を追跡し、X 回のリクエストごとに再生成することもできます (5 または 10 など、十分な量であると判断した場合)。セキュリティレベル)。もう 1 つのオプションは、ログインなどの特権エスカレーション中にセッション ID を再生成することです。

HTTP_USER_AGENT に関しては、ブラウザ/クライアント固有の機能を実装するのに最も役立ちます (たとえば、ユーザーが Firefox または IE を使用してサイトにアクセスしたときに「Get Chrome!」リンクを表示するなど)。

于 2010-12-09T20:15:15.753 に答える