へっぽこコーダーの備忘録

phpやらjavascriptやら、使った技術をすぐに忘れちゃうから、おぼえがき程度に書いていきまーす
2025.05.14

.htaccessで海外からのアクセスを拒否しよう!

ECcubeで構築しているECサイトで、スパム購入が多発してしまいました。
ログを確認したところ、やはり海外からのアクセスです。

reCAPTCHAの導入でもいいのですが、一旦、海外サイトからのアクセスの遮断を行ったので、その備忘録。

対応方法は、.htaccessにて海外からのアクセスを遮断。

.htaccessに記載するコード

ドキュメントルートディレクトリ(public_htmlなど)直下の.htaccessに以下を記載。


<IfModule mod_geoip.c>
GeoIPEnable On
Order deny,allow
deny from all

SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
SetEnvIf User-Agent "Googlebot" AllowSearchBot
SetEnvIf User-Agent "Mediapartners-Google" AllowSearchBot
SetEnvIf User-Agent "Slurp" AllowSearchBot
SetEnvIf User-Agent "Y!J" AllowSearchBot
SetEnvIf User-Agent "bingbot" AllowSearchBot
SetEnvIf User-Agent "msnbot" AllowSearchBot
SetEnvIf User-Agent "facebookexternalhit" AllowSearchBot
SetEnvIf User-Agent "Twitterbot" AllowSearchBot
SetEnvIf User-Agent "Hatena" AllowSearchBot
SetEnvIf User-Agent "MicroAd" AllowSearchBot

Allow from env=AllowCountry
Allow from env=AllowSearchBot
</IfModule>

コードの説明

・GeoIP機能を有効にする。これにより、アクセス元IPの国を識別できるようになる。
・アクセス拒否、アクセス許可の順に処理を進める。
・まずは、全てのアクセスを拒否。
・許可用の環境変数に日本を追加。
・検索エンジンなどのbot用環境変数に各botを追加。
・許可用環境変数のアクセスに関しては、許可を実行。

という感じですね。

最近、攻撃やスパムが激増してきて、ほんとに迷惑。。。