本文へ移動

ログイン前のボット対策

ボット対策認証はログインフローの最初に実行され、自動化されたリクエストが認証 API へ直接到達するのを抑えます。ログイン認証情報、IP 許可リスト、WAF の代わりになる機能ではありません。

システム設定 → チャレンジ で認証方式を選び、保存します。新しく開いたログインページには新しい設定が適用されますが、既存のセッションは失効しません。

選択できる方式

方式特徴向いている用途
PoW CAPTCHAブラウザーで Proof of Work を実行し、外部サービスに依存しない外部依存を減らし、クライアント側で少量の計算を行ってもよい場合
Cloudflare TurnstileCloudflare が検証を行うCloudflare をすでに利用しており、マネージド型のボット対策を使いたい場合

PoW はデフォルトの組み込み方式です。ブラウザーは SHA-256 チャレンジを取得し、ローカルで proof を計算します。チャレンジの有効期間は 5 分で、正常に使用できるのは 1 回だけです。画面に難易度の調整項目はなく、サーバーが現在指定する探索範囲の上限は 100000 です。

Turnstile を選ぶ前に Cloudflare でウィジェットを作成し、サイトキーシークレットキー を fn-knock に入力する必要があります。詳しい手順は Cloudflare Turnstileを参照してください。

切り替えと保存

システム設定 → チャレンジ で PoW CAPTCHA または Cloudflare Turnstile を選びます。Turnstile を選ぶ場合は、サイトキーとシークレットキーの両方を入力してください。どちらか一方が欠けていると、フロントエンドとバックエンドの両方で保存が拒否されます。

サイトキーは公開ログインページへ送られ、ウィジェットの表示に使用されます。シークレットキーはサーバー側だけに保存され、Cloudflare でトークンを検証するために使われます。PoW へ戻しても Turnstile の既存パラメーターは設定に残り、後で再び選択したときにそのまま利用できます。

プロバイダーを変更してもログイン済みセッションは破棄されず、その後に認証フローへ入る新しいリクエストだけに影響します。すでに開いているログインページには以前のチャレンジが残っている場合があるため、ページを再読み込みしてからテストしてください。

ボット対策認証の範囲

  • 保護されるのは、fn-knock のログインページを通るトラフィックだけです。
  • プライベートネットワークやローカルの送信元はデフォルトでローカル例外になるため、LAN 内での結果だけでは公開側のボット対策が正常か判断できません。
  • Turnstile では、ブラウザーから Cloudflare の検証リソースへ到達できる必要があります。制限されたネットワークやブロックルールがあると、ウィジェットが表示されなかったり、検証に失敗したりすることがあります。
  • 方式を変更した後は、シークレットウィンドウとモバイル回線を使って、ログインフロー全体を 1 回確認してください。

トラブルシューティング

  1. 設定が保存済みであることを確認し、ログインページを開き直します。
  2. PoW が期限切れまたは使用済みと表示されたら、ページを再読み込みして新しいチャレンジを取得します。システム時刻がずれている場合も、有効期間の判定に異常が起こります。
  3. Turnstile では、サイトキーシークレットキー、ウィジェットの hostname、実際のログインドメインが一致しているか確認します。
  4. ログイン用ドメインが正しく名前解決され、HTTPS を使用していることを確認します。
  5. ブラウザーのコンソール、リクエストログ、イベントセンターに記録されたエラーを確認します。

QQ コミュニティ:1081609274