5分間の間隔内に5つの不正があった場合、IPによって、たとえば10分間、すべてのリクエストをブロックしたいと思います。そして、パフォーマンスを損なう可能性が最も少ない方法でこのデータを保存する方法を考えています。
特に、DB テーブルの設計方法とデータの格納方法について。
たとえば mysql を使用して、IP の固定テーブルをプライマリとして作成すると、次のようになります。
ip int(10) unsigned, primary key (ip)
attempts int(5),
lastaccess timestamp default current_timestamp
そうすると、試行の蓄積が不十分になります...
一方、タイムスタンプを使用してすべての不正な試行をログに記録すると、次のようになります。
ip int(10) unsigned,
lastaccess timestamp default current_timestamp,
primary key (ip,lastaccess)
そして、5 分間隔内で時間をさかのぼると、このすべてのデータでテーブルが非常に大きくなり、システムの速度が低下する可能性があります...メンテナンスも必要になります。
それで、私にとってもっと便利なことをアドバイスしていただけませんか?...