7

私のサイトは、攻撃者がユーザー アカウントへのアクセスを取得しようとするブルート フォース攻撃を受けています。ボットにはユーザー エージェントがありません。アカウントごとに 10 分以内に 3 回を超える試行を行うと、そのユーザーのサインインをブロックするシステムが導入されています。

また、ユーザー エージェントをチェックし、そうでない場合は終了するようにしました。

私の質問は: セッションはブラウザーにのみ保存されますか? 私が考えているのは、コマンド ライン経由で実行されるスクリプトを使用しているということです。

私もこれを実装しました:

if(!isset($_COOKIE[ini_get('session.name')])) {
header("HTTP/1.0 404 Not Found");
exit;
}

これらの攻撃を防ぐために他にできることはありますか?

4

1 に答える 1

16

セッション変数の内容はサーバーに保存されますが、セッションはクライアントに保存され、各リクエストで送信されるセッション ID によって識別されます。通常、セッション ID は Cookie に保存されますが、URL に追加することもできます。

Wiki とPHP Security Consortiumには、セッション ハイジャックに関する非常に興味深い記事があり、ハイジャックとは何か、それを防ぐ方法について理解を深めることができます。

これらの攻撃を防ぐ方法はたくさんありますが、私が指摘したのは次の 3 つです。

  • ユーザーが正常にログインした後、 PHP のsession_regenerate_id()を使用します。これにより、もちろんセッションが開始された場合に、パブリック/セーフ エリアに最初にアクセスしたときに作成されたものとは異なる新しいセッション ID が作成されます。
  • 正常にログインしたときに、ユーザーの IP アドレス、セッション ID、およびユーザー エージェントを記録します。すべての要求について IP とユーザー エージェントを確認し、IP とエージェントがこのセッションと一致しない場合は、再度ログインさせます。ただし、ユーザーの IP が変更されることがあり、誰かを困らせる場合があることに注意してください。また、ユーザー エージェントも簡単に偽装できることに注意してください。
  • SSL/TCL を使用して、リクエストで送信された情報を非表示にします。
于 2012-07-28T01:41:03.693 に答える