プラグインなしでログイン試行を制限しますか?
プラグインを使わずにWordPressのログインページを保護する方法
English version: Limit login attempts without a plugin?
インターネット上には、それに関するコメントやアドバイスがたくさんあります。でも、本当にそうなのでしょうか?
WordPressはデフォルトで、ログインフォーム、特別なCookieの送信、XML-RPC呼び出し、REST API呼び出しによる無制限のログイン試行を許可しています。そのため、ブルートフォース攻撃によって比較的容易にパスワードを破られる可能性があります。昨今、ハッカーやボットは、管理者パスワードやサイトに登録されている他のユーザーのパスワードを推測して、WordPressサイトへのログインを常に試みています。そのため、プラグインを使用せずにサイトを保護するには、以下の対策が必要です。
- PHP をよく理解してください。
- WordPressに組み込まれている認証フィルターとアクションについて十分に理解し、それらをフックできるようにしましょう。「authenticate」や「wp_login_failed」などのフックから始めることをお勧めします。
- ログイン後のフォーム、XML RPC および REST API 認証リクエストを追跡します。認証 Cookie も忘れないでください (有効ですか?)。
- すべてのログイン試行とすべてのIPアドレスをどこかに保存しておき、いつどのIPをブロックする必要があるかを計算しましょう。Transient APIの使用をお勧めします。本当に。これが一番簡単な方法です。もちろん、制御はできませんが、SQLの知識がなくても何かを行うことができます。
- 特定の IP への失敗したログイン試行間の時間を計算します。
- これらのカウンターやブロックされた顧客のIPアドレスをリセットするツールやPHPコードはありますか? 万が一、正当な顧客がブロックされてしまった場合はどうすればいいでしょうか?
ちょっとおかしい? 2つ目の方法があります。Googleで検索して、インターネット上のブログからコードスニペットをいくつか入手するという方法もあります。ただし、保証やサポートは一切ありません。
結論:プラグインを使わずにログイン試行回数を制限する方法については、インターネット上に多くのアドバイスが見つかります。しかし、そのアドバイスはすべて、WordPressの認証アルゴリズムの仕組みを正確に理解していない人々によって提供されており、Stack Overflowの善良な人々も例外ではありません。いずれにせよ、サイトのセキュリティを本当に気にしないのであれば、PHPコーディングのスキルとWordPressの認証メカニズムの知識がなければ、適切な方法でログイン試行回数を制限する方法はないため、この方法を採用することは可能です。