WordPress ではサーバーのコードを書きません。Korzen Bot Protection プラグインが、タグと呼び出しの仕事を引き受けます。サイトのページとログインページにタグを読み込み、ログイン、新規登録(WordPress のものと WooCommerce のもの)、WooCommerce のチェックアウト(クラシックとブロックの両方)の前に Bot Protection に問い合わせます。Bot Protection が遅い(200 ms 超)、止まっている、または想定外の応答を返したときは、訪問者はそのまま通ります。WordPress 6.5 以降と PHP 8.2 以降が必要です。
インストール
プラグインはまだ WordPress.org のディレクトリにありません。zip が必要な場合はご連絡ください。WordPress で プラグイン > 新規プラグインを追加 > プラグインのアップロード を開き、zip を選んで有効化します。
設定
設定 > Korzen Bot Protection を開き、Set-up ページの 2 つのキーを貼り付けます。タグが持つサイトキー(YOUR_SITE_KEY)と、サーバーが送る API key です。保存した API key は二度と表示されません。データベースに置きたくない場合は、代わりに wp-config.php で定義し、欄は空のままにします。
// wp-config.php, above "That's all, stop editing!" define( 'KORZEN_API_KEY', 'your API key' );
ほかに 2 つの設定があります。
- モード。 Monitor は問い合わせるだけで、応答にかかわらず全員を通します。まずはこちらで始め、ダッシュボードで判定を確認してください。Block は応答の
actionを適用します。Set-up ページでも block mode をオンにするまで、actionはallowのままです(monitor mode と block mode を参照)。 - 訪問者の IP。 ロードバランサー、プロキシ、Cloudflare の後ろでは、すべての訪問者がそこから来たように見えます。自前のロードバランサーやプロキシの後ろなら X-Forwarded-For の最後のエントリを、サーバーが Cloudflare からの通信だけを受けるなら CF-Connecting-IP を選びます。それ以外は 接続 のままにします。
保護するもの
- ログイン: ログインページと、WooCommerce のマイアカウントのログイン。Bot Protection への問い合わせは、WordPress がパスワードを確認した後に、正しくても誤っていても行われます。そのため、拒否がパスワードについてボットに何かを教えることはありません。XML-RPC と REST API によるアプリのログインは問い合わせません。そこではタグが動いていないからです。
- 新規登録: WordPress の登録ページと、WooCommerce のマイアカウントの登録。
- チェックアウト: WooCommerce のクラシックなチェックアウトと、ブロックのチェックアウト。
サイトのアドレスにかかわらず、ダッシュボードではそれぞれ /login、/signup、/checkout と表示されます。
訪問者に見えるもの
block mode では、Bot Protection がブロックした訪問者には、フォームのいつものエラーが表示されます。リクエストを完了できなかったことだけを伝え、理由は伝えません。判断に迷う訪問者(challenge)には、チャレンジページへのリンクが表示されます。短い確認の後に同じフォームへ戻るので、もう一度送信すれば先へ進めます。
送るものと保存するもの
保護された操作の前ごとに、サーバーは Bot Protection に、訪問者の IP アドレス、User-Agent、呼び出しが挙げるヘッダー、タグの _kz トークン、メソッド、操作の名前を送ります。パスワード、メールアドレス、注文は決して送りません。プラグインが保存するのは自身の設定だけで、WordPress のオプション 1 つに入り、プラグインを削除すると消えます。