2012-03-22 8 views
1

月曜日、ログインするまで、セッションをユーザIPとして設定することでセッションハイジャックのセキュリティ問題を解決したと思います。テストユーザー)、2つの間で切り替えを続けました。これを防ぐ方法があり、私のサイトに同じIP登録を持つ2人のユーザーを許可しますか?PHPセッション - 複数のユーザが1つのIPを持つ

ありがとうございます。 テリー。

+4

患者:医者、私がこれをすると痛い。医者:そうしないでください。 –

+2

PHPの標準セッションIDジェネレータの使用に何か問題がありますか? IPは、一人の個人の一意の識別子ではなく、一度もなかったこともありません。 –

+0

IPは本当に最も安全なパラメータではありません... –

答えて

1

ユーザーIDをと一緒にテーブルと一緒に保存することをお勧めします。それから、後続のリクエストで同じIPから来ていることを確認し、そうでなければ再びログインするようにします。この方法には問題があります。ユーザーのIPは、ISPによって10分ごとに頻繁に変更される可能性があります。

PHPが提供するセッションIDは、ユニークで推測が困難なものとして使用してください。クッキーから読み取られ、URLから決して読み取られることを要求しないでください。

+0

[ここから](http://stackoverflow.com/questions/5081025/php-session-fixation-hijacking/5081453#5081453): "$ _SERVER ['REMOTE_ADDR']のユーザーのIPアドレスをセッションに含めます。セッションが開始されると、$ _SESSION ['remote_ip']のようなものに保存してください。これは、ユーザーのために複数のIPアドレスを使用するISP(AOLなど)から問題があります。はるかに安全になるだろう」 –

0

私はあなたのIPを使って、MySQLデータベースのユーザーの情報を探していますか?それは間違いです。本当にユニークな唯一の方法は、主キーフィールドを使用することです。

プライマリキーをセッションとして保存し、データをプルするか、関連する情報をセッションに保存し、必要なときにのみ他のものをプルします。

+0

アドバイスをいただきありがとうございます。セッションハイジャックの記事を読むまでは、私がやっていたことです。明らかに、これはそれを行う最も安全な方法ではありません。これを防ぐための他の解決策がありますか? –

+0

@TerryHarveyはい@stackoverflow.com/a/5081453/46675 –

+0

@MikeBありがとうございました。 :)私は見てみましょう。 –

1

問題がある場合はサイト全体をSSLで保護し、短いクッキータイムアウトを適用します。 sslはクッキーと送信を暗号化して、盗聴することはできません。システムに直接アクセスした場合、「ログインした」コンピュータから取得した直後に、短い時間でクッキーが役に立たなくなります。したがって、短期間にセキュリティ証明書を取得し、通常のPHPセッションで通常どおりに続行します。

関連する問題