2

私のサイトの1つで、ini_set('session.use_trans_sid', 1)Cookieを持たないユーザーがサイトを使用できるように設定しました。これは、URLを介してセッションを追跡します。

ただし、セッションが簡単に乗っ取られる可能性があるという深刻なセキュリティ問題が発生しています。

基本的に、GooglebotはCookieを使用しないため、Googleはクロール時に指定されたセッションIDを使用してページのインデックスを作成しています。

次に、誰かが私のサイトを検索し、古いセッションURLを含むGoogleの検索結果をクリックすると、その古いセッションIDが新しいセッションIDではなく)セッションIDになります。

したがって、そのユーザーがログインすると、そのユーザーのアカウントは、Google全体でインデックス付けされたセッションIDを使用してログインします。つまり他のユーザーが私たちのサイトを検索し、Googleで検索結果のいずれかをクリックすると、他のユーザーのアカウントに自動的にログインします。

巨大なセキュリティホールについて話してください!

どうすればこれを修正できますか?PHPはセッションIDが無効である(または存在しない)ことを認識してから新しいIDを生成すると思っていたのですが、そうではないようです。そうすれば、この問題は修正されるようです。

助けてください!


編集:

ここで本質的に起こっていることは、PHPでは、URLにセッションIDパラメータに必要なものを入力するだけで、誰でも独自のカスタムセッションIDを作成できるようになり、PHPはそれをセッションIDとして使用し始めます。URLで文字通りSessionID = "securityflaw"を作成でき、ログイン後も文字通りそれをセッションIDとして使用しますしたがって、誰かがGooglebotの古いセッションIDを使用してGoogleのリンクをクリックすると、PHPはユーザーに「カスタム」セッションIDを作成します。確かに何かがおかしい!

4

1 に答える 1

2

http://php.net/manual/en/function.session-regenerate-id.phpを調べて、ユーザーがログインしたときにSIDを再生成する必要があります。これにより、ユーザーがログインに使用した場合、Google検索のSIDは無効になります。

于 2012-12-01T19:00:08.140 に答える