私はあなたの質問にボトムアップで答えようとします: 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!」リンクを表示するなど)。