登録時のユーザー名チェックがフリーズする

https://it6.cc/ のウェブサイトで登録しようとすると、ユーザー名の空き状況の確認がスタックします。「ユーザー名の空き状況を確認中…」というメッセージが表示され、長時間表示されたままになり、通常の登録が進行できなくなります。


問題の原因を見つけました。Cloudflare WAF ルールが原因です。
元のルール

(cf.threat_score ge 5 and not cf.client.bot) or (not http.request.version in {"HTTP/1.2" "HTTP/2" "HTTP/3" "SPDY/3.1"}) or (not http.user_agent contains "Mozilla/")

Claude AI による最適化ルールがこちらです。これで問題が解決しました。

(cf.threat_score ge 10 and not cf.client.bot) or
(http.request.version eq "HTTP/1.0") or
(not http.user_agent contains "Mozilla/" and not cf.client.bot)
変更点の解説

Cloudflare ファイアウォール ルール分析と最適化

現在のルール:

コピー

(cf.threat_score ge 5 and not cf.client.bot) or
(not http.request.version in {"HTTP/1.2" "HTTP/2" "HTTP/3" "SPDY/3.1"}) or
(not http.user_agent contains "Mozilla/")

分析:

  1. cf.threat_score ge 5 and not cf.client.bot: この部分は妥当であり、ボットではない高脅威クライアントをブロックします。
  2. not http.request.version in {"HTTP/1.2" "HTTP/2" "HTTP/3" "SPDY/3.1"}: これは制限が厳しすぎる可能性があり、正当な古いクライアントをブロックする可能性があります。
  3. not http.user_agent contains "Mozilla/": これは、ブラウザ以外のクライアントや API 呼び出しからの正当なリクエストをブロックする可能性があります。

最適化されたルール:

コピー

(cf.threat_score ge 10 and not cf.client.bot) or
(http.request.version eq "HTTP/1.0") or
(not http.user_agent contains "Mozilla/" and not cf.client.bot)

変更点の解説:

  1. 脅威スコアのしきい値を 10 に引き上げ、より多くの正当なトラフィックを許可します。
  2. HTTP/1.0 のみをブロックし、新しいバージョンと SPDY を許可します。
  3. ユーザーエージェントのチェックをボット以外のトラフィックにのみ適用するように変更し、API 呼び出しや正当なブラウザ以外のクライアントを許可します。

追加の考慮事項:

  • ユーザー名のチェックに使用される特定のパスまたはエンドポイントの例外を追加します。

コピー

and not (http.request.uri.path contains "/check_username")
  • ユーザーの大部分が利用している既知の良好な IP 範囲または国をホワイトリストに登録します。
  • 一部の条件では、完全なブロックの代わりにレート制限の実装を検討してください。

実装:

現在のルールを最適化されたバージョンに置き換え、その効果を監視します。トラフィックパターンとセキュリティ要件に基づいて必要に応じて調整してください。

「いいね!」 1