良い質問がたくさんあります。質問してくれてありがとう。
まず..セッションは単なるクッキーです。「セッション」は、HTTP スタックの一部ではありません。PHP はたまたま Cookie の操作を簡単にするいくつかの便利さを提供しているため、セッションが導入されています。PHP は、Cookie のデフォルト名として PHPSESSID を選択しますが、任意の名前を選択できます。PHP でも、session_name を変更できます。
攻撃者がしなければならないことは、ユーザーが見ているセッション Cookie を取得し、それを独自のブラウザーで使用することだけです。攻撃者は、自動化されたスクリプトを使用するか、たとえば firebug を使用して、現在の Cookie 値を変更するだけでこれを行うことができます。
そうです、あなたの ID を持っていれば..あなたがそれを防ぐために何もしなければ、私はあなたのセッションを盗むことができます。
ただし、攻撃者にとって最も難しいのは、最初に Cookie を取得することです。次の場合を除き、攻撃者は実際にこれを行うことはできません。
- 彼らはあなたのコンピュータにアクセスできます
- 彼らはどういうわけか、ネットワーク トラフィックをのぞき見することができます。
最初の部分は解決が難しい.. セッションを開始したコンピューターを特定するためにできるいくつかのトリックがあります (ユーザー エージェントが変更されたかどうかを確認し、IP アドレスが変更されたかどうかを確認します)。
2 番目の問題は、すべてのトラフィックが HTTPS を使用して暗号化されていることを確認することで修正できます。HTTPS を使用しない理由はほとんどありません。サイトに「ログイン」エリアがある場合は、SSL を使用してください!!
この種の答えがあなたの質問に答えられることを願っています..私が今考えた他のいくつかの指針:
- ユーザーがログインするたびに、新しいセッション ID を与える
- ユーザーがログアウトするたびに、新しいセッション ID も付与してください。
- ブラウザがセッション Cookie の値を特定できない状況が発生しないようにしてください。Cookie を認識できない場合は、新しい Cookie を再生成してください。