1

これは正常ですか。2つの異なるスキャナーを試しましたが、どちらも同じエラーが発生するようです。サイトを通常表示してもこれらのエラーは発生しないため、スキャナーの動作に関係している可能性があります。 (サイトも正常に機能します-期待どおり)。

もちろん、それを無視してエラーログをクリアすることもできます(サイトのスキャンが終了したとき)が、興味があり、その理由(および「修正」があるかどうか)を知りたいですか?

ご参考までに:

  • サイトがスキャンされているとき。同じエラーが繰り返し発生します(が含まれているページでsession_regenerate_id(true))。

  • 私が試したスキャナーはどちらも無料のFirefoxアドオンです。'SQL Inject Me'(Security Compassによる)およびWebsecurify。

  • 私は自分のサイトでこれらのテストを実行しています(「localhost」を介して)。

  • セッションはファイルベースです。

4

3 に答える 3

2

問題は、コードとセッションの処理方法にあります。

Webサイトを通過し、さまざまな入力を操作しようとしているスキャナーを実行しており、応答を分析して攻撃が成功したかどうかを確認しています。

ページが表示されている場合session_regenerate_id(true)、そのメソッド呼び出しは現在のセッションを削除して新しいセッションを開始しようとします。

これがスキャナーで発生する理由は、スキャナーが通常のユーザーがたどらないアプリケーションを介していくつかのパスをたどっている可能性があるためです。したがって、スキャナーがそのsession_regenerate_id(true)中にあるPHPコードを実行するURLにヒットし、現在のセッションがない場合は、そのエラーが発生します。

session_regenerate_id(true)理想的には、現在のセッションが存在するかどうかを確認するために呼び出す前にチェックする必要があります。そうでない場合は、ユーザーをログインページに移動し、再認証を依頼する必要があります。

ご不明な点がございましたらお知らせください。

于 2012-09-27T15:05:55.707 に答える
1

もちろん、それを無視してエラーログをクリアすることもできます(サイトのスキャンが終了したとき)が、興味があり、その理由(および「修正」があるかどうか)を知りたいですか?

PHPバージョンを現在の安定したバージョンであるPHP5.4.7にアップグレードします。

セキュリティチェックを再度実行します。それでもエラーが発生する場合(これは非常に疑わしいです)、さらに調査する必要があります。その場合(およびそれ以前)、セッション構成(思ったよりも大きい)を質問に追加する必要があります。

また、これをトリガーしているコードは不明です。この関数session_regenerate_id()は通常、セッション管理のコンテキストで使用されます。

セッションの概念は、多くの開発者(私を含む)がその分野でエラーを頻繁に行うことを理解するのはそれほど簡単ではないためです。いくつかの便利なデバッグ機能:

于 2012-10-01T19:40:25.910 に答える
-2

session_write_close();前に使用してみてくださいsession_regenerate_id(true)。この問題の考えられる理由は、コードが並列クエリを作成していることです。私も同じ問題を抱えていましたが、これは私を助けてくれました。

于 2013-11-13T16:49:53.043 に答える