Korzen
Bot Protection

WordPress と WooCommerce

コードなしで WordPress に Bot Protection を: プラグインがタグを読み込み、ログイン、新規登録、WooCommerce のチェックアウトの前に問い合わせ、fail-open で動きます。

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 つに入り、プラグインを削除すると消えます。