私はperlでログインフォームに取り組んでいます。30 分間の無効なログイン試行を 3 回に制限したいと考えています。どのように使用しますか。無効なログイン試行を保存する場所を教えてください。
1 に答える
いくつかのオプションがあります。
Cookie - 最も安全性が低く、さまざまなブラウザー、Cookie の消去などがすべてこれに影響を与える可能性があります。推奨はしませんが、完全を期すために記載しています。
データベース - データベースを使用している場合は、失敗したログイン試行をすべて記録するテーブルを作成できます。このテーブル内login_attempts
に次の値を記録します: date
, username
. 次に、ログインの試行中に (疑似 SQL ) SELECT COUNT(*) FROM login_attempts WHERE username = '$the_user_name' AND date BETWEEN '$now' AND '$now-30m'
。戻り値が >= 3 の場合、ログインを拒否します。ユーザー名と日付の降順にクラスター化インデックスを作成してください。スペースが心配な場合は、夜間に実行され、たとえば 8 時間より古い日付のレコードを削除するジョブを使用できます。(そのままにしておきますが、これは監査ログとして機能します。)
ファイル システム - このオプションはビザンチンなので、詳細な説明はしません。何らかのデータベース バッキング ストアが既に配置されていることを前提としています。このルートに行かなければならない場合、上記のデータベース ソリューションのように見えますが、SELECT ステートメントがなく、各ログイン試行を含むファイルと (mtime + 30m < now) が存在する必要があるディレクトリとしてユーザー名が含まれる可能性があります。ログインの成功を許可する場合は true。もちろん、ディスクで mtime が有効になっていることを確認するか、ファイル内に時間を記録する必要があります。