Pour différentes raisons, que ce soit pour limiter l’accès d’un site e-commerce à certains pays (commandes frauduleuses), ou pour éviter des pays dits sensibles en terme de piratage, il est parfois nécessaire de bloquer les visiteurs provenant d’un pays donné, ou de limiter leur accès à un site web, en particulier aux boutiques en ligne ou à des blogs.
M’étant moi même posé la question, j’ai fait le tour de la toile pour savoir ce qui était écrit sur le sujet, et ce qui se pratiquait, et il existe plein de solution, tout dépend de votre savoir faire, du temps et du besoin. Pour cet article, j’ai choisi une solution qui m’a semblé très simple et qui devrait couvrir la majorité des raisons pour lesquelles vous avez besoin de limiter les accès. Ne nous faisons pas d’illusion, un hacker pourra toujours utiliser un proxy pour contourner l’interdiction sur un pays :-(.
Nous allons donc passer par le fichier .htaccess pour mettre en place le blocage et utiliser la variable GEOIP_COUNTRY_CODE pour repérer la pays de provenance de l’IP.
SetEnvIf GEOIP_COUNTRY_CODE BE BlockCountry SetEnvIf GEOIP_COUNTRY_CODE DZ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry Deny from env=BlockCountry
Dans cet exemple, ce sont les visiteurs en provenance de la Belgique, de l’Algérie et de la Chine qui seront bloqués. J’ai pris ces trois pays au hasard et vous devrez adapter votre fichier en fonction de vos besoins.
N’hésitez pas à me faire part de vos commentaires ou autres solutions pour enrichir ce post!!
13/12/2015 : suite à vos commentaires sur ce sujet, il est important de préciser qu’il faut que l’hébergeur ait installé le module Apache GeoIP afin que cela puisse fonctionner, d’où certainement vos messages m’indiquant que les script n’était pas opérationnel sur vos sites. A noter également que ce module Apache serait installé chez OVH.