
本記事で紹介する「Cloudflare国コード(HTTP_CF_IPCOUNTRY)による国内限定」は、Contact Form 7(CF7)の問い合わせフォームにおける軽量スパム対策として、海外からの送信をバリデーション段階で早期に止めるための仕組みです。
※本対策は メール到達性の保証や アカウント実在確認を行うものではありません。
※Cloudflare を経由しない環境や、国コードが取得できない環境では、誤ブロック防止のため制限は無効(通過)になります。
※ここで紹介するコードは学習・参考用のサンプルです。環境により動作が異なる場合があるため、本番導入前に必ずテスト環境で検証してください。
Cloudflare国コードを使った国内限定フォームの軽量スパム対策

また新しいコード書いたって?

国内限定フォームの軽量スパムで検証するだけの小物ツール🐰💻

いつものことでなんかよくわかんないけど、なんかすごそう!!!
この記事で実装できること
Cloudflare が提供している 国コード情報(HTTP_CF_IPCOUNTRY) を利用して、
- 日本(JP)のみ許可
- それ以外は送信前に停止
- CF7のバリデーション段階で早期終了(※本サンプルは 必須メール項目(email*)があるフォーム を前提にしています)
- DNSチェックやメール処理を発生させない
という 低負荷なフィルタリング処理 を実装します。
なぜこの方法が「軽量」なの?
多くのスパム対策は、
- DNSチェック
- reCAPTCHA
- API通信
- JavaScript検証
など、外部通信や追加処理が必要です。
一方この方法は、
👉 文字列比較だけ(国コードを見るだけ)
なので、処理コストがほぼゼロです。
つまり、
- サーバー負荷がほとんど増えない
- 入口で止められる
- Bot対策として効率が良い
という特長があります。
仕組み
Cloudflare利用時、リクエストヘッダに以下が自動付与されます。
HTTP_CF_IPCOUNTRY: JP
※この値は Cloudflareを経由している場合のみ前提にできる情報です(Cloudflare未使用環境では取得できない/信頼できないため、本記事の実装でも「取得できない場合は通す」設計にしています)
HTTP_CF_IPCOUNTRY: JP
これを利用して、
- JP → 通す
- それ以外 → 停止
という単純な分岐を行います。
実装コード
add_filter('wpcf7_validate_email*', 'usaneko_cf7_country_block', 10, 2);
function usaneko_cf7_country_block($result, $tag){
// 管理者は通す(テスト用)
if ( is_user_logged_in() ) return $result;
$country = '';
if ( !empty($_SERVER['HTTP_CF_IPCOUNTRY']) ) {
$country = strtoupper($_SERVER['HTTP_CF_IPCOUNTRY']);
}
// 国コードが取れない環境は誤判定防止のため通す
if ($country === '') return $result;
// 日本以外は停止
if ($country !== 'JP') {
$result->invalidate(
$tag,
'現在このフォームは国内からのご利用を想定しています。'
);
}
return $result;
}
導入前の注意点(重要)
この方法は 「国内専用フォーム向け」 の設計です。
以下のようなケースでは、正規ユーザーも利用できなくなる可能性があります。
- 海外からのアクセス
- 海外在住の日本人ユーザー
- VPN / プロキシ利用者
- 企業ネットワーク経由
- 国コード取得に失敗する特殊環境
また、Cloudflare を使用していない場合は国コードが取得できないため、自動的に制限は無効(通過) になります。
この対策が向いているサイト
向いていないサイト
海外アクセスも受け付けたい場合は?
「完全ブロック」ではなく、次の方式がおすすめです。
「拒否」ではなく「確認」方式にすると誤判定が減ります。
メリット
この記事のまとめ
この方法は 万能な防御策ではなく、あくまで「運用を楽にする補助フィルター」 です。
DNSチェック・Turnstile・WAFなどと組み合わせることで、より安定したフォーム運用が可能になります。
「最近フォームが荒れてきたな…」と感じたら、選択肢のひとつとして検討してみてください。
本記事は学習・参考用の実装例です。実運用への適用可否はサイトの目的や利用者属性(海外利用/VPN/企業回線等)によって変わるため、最終判断は運用者の責任で行ってください。導入後の機会損失や不達・誤判定について当方は保証できません。
WordPress+Cocoonを始めるなら「エックスサーバー」がおすすめ!
「これからWordPress+Cocoonでブログを作りたい!」という方には、
国内シェアNo.1の高速レンタルサーバー エックスサーバーがぴったりです。
- 🚀 WordPressクイックスタート対応(最短10分でブログ開設)
- 🪄 Cocoonテーマの自動インストールにも対応
- 🔒 無料独自SSL/高セキュリティ/自動バックアップ完備
- ☁️ 高速SSD・安定稼働率99.99%以上
- 💰️ スタンダード 月額料金 990円~ 693円~(キャンペーン中なら) 2025/11現在
「WordPress × Cocoon」を最もスムーズに始められる環境が整っています。
👉 今すぐチェック:レンタルサーバー エックスサーバー
最新のサービス価格は公式サイトでご確認ください。
免責事項
本記事のサンプルプログラムは、学習・参考用として掲載しているもので、動作や結果を保証するものではありません。 利用する場合は、ご自身の環境に合わせて確認しながらお使いください。万が一トラブルや損害が発生した場合でも、当サイトでは責任を負いかねます。

※本文中に記載の会社名・製品名・サービス名・ゲームタイトル名等は、各社の商標または登録商標であり、権利は各社に帰属します。
※サンプルはテストを行っていますが、すべての環境での動作を保証するものではありません。ご利用は自己責任でお願いいたします。
※本記事の仕様・価格・対応状況等は執筆時点で確認できた情報をもとに掲載しています。最新の情報はメーカー公式サイトをご確認ください。
※当サイトでは一部の記事において、アイキャッチ画像にAI生成を使用しています。