====== Bloquer des visiteurs par mesure de sécurité ======
Internet est un peu comme une jungle, beaucoup d'utilisateurs du web ont des connaissances limitées en matière de **risques**. Le webmaster se doit de protéger ses visiteurs contre des potentiels escrocs. \\
Ici, nous verrons différentes méthodes pour interdire l'accès de votre site internet aux potentiels escrocs.
===== Pré-requis ====
Pour que les méthodes ci-dessous fonctionnent, il faut que :
* Vous pouvez créer un fichier //.htaccess// sur votre hébergement
* que le module //MOD_REWRITE// soit activé sur vote hébergement
* que le module //GEO_IP// soit activé pour la bannissement par pays
===== Blocage par plages IP =====
Vous pouvez bloquer un visiteur par plages IP. Pour cela voici un exemple, ici nous bloquons certaines plages Ip provenant de Bulgarie. Attention tout de même lorsque vous bloquez des plages complètes, certaines plages peuvent être attribuer à plusieurs pays.
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^109\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^151\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^178\.[0-9]+\.[0-9]+\.[0-9]+
RewriteRule .* - [F]
Ici, nous bloquons les adresses IPs commençant par 109, 151 ou 178.
===== Blocage des visiteurs par géolocalisation =====
Autre méthode, l'utilisation de la géolocalisation du visiteur, sous condition, bien sûr, que votre hébergement soit compatible.
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^BG|RO|RU|NE|SN|NG|BJ|CI$
RewriteRule .* - [F]
Ici, nous bloquons les visiteurs provenant des pays suivants : Bulgarie, Roumanie, Russie, Niger, Sénégal, Nigéria, Bénin et Côte d'Ivoire.
===== Blocage des utilisateurs de Proxy =====
Certains malins, pour cacher leurs provenances ou leurs traces utilisent des **serveurs Proxy**. Voici un code qui bloque les protocoles HTTP utilisés par ces **serveurs Proxy**.
RewriteEngine on
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ - [F]
===== Cas pratiques =====
Vous pouvez, bien sûr, utiliser les 3 méthodes pour renforcer le filtrage des potentiels escrocs. Il suffit d'utiliser les codes en exemples ci-dessous en les adaptant à vos besoins.
RewriteEngine on
# Blocage plages IP
RewriteCond %{REMOTE_ADDR} ^109\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^151\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^178\.[0-9]+\.[0-9]+\.[0-9]+
RewriteRule .* - [F]
# Blocage par pays
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^BG|RO|RU|NE|SN|NG|BJ|CI$
RewriteRule .* - [F]
# Blocage des Proxy
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ - [F]
\\
Autres cas, vous souhaiter bannir tous les **serveurs Proxy** sauf quelques uns que vous jugez fiables. Sur le même principe, nous pouvons utiliser les exceptions pour les autoriser en suivant l'exemple ci-dessous.
RewriteEngine on
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteCond %{HTTP_REFERER} !(.*)proxy01.net(.*)
RewriteCond %{HTTP_REFERER} !(.*)proxy02.net(.*)
RewriteCond %{HTTP_REFERER} !(.*)proxy03.net(.*)
RewriteRule ^(.*)$ - [F]
Ici, dans l'exemple, nous interdisons tous les serveurs Proxy sauf proxy01.net, proxy02.net et proxy03.net.
===== Conclusions =====
Avec ce genre de codes vous pouvez filtrer pas mal d'escrocs potentiels, même si vous risquez d'avoir des faux positifs.
Il faut garder à l'esprit qu'aucune méthode n'est fiable à 100%, la sécurité de vos visiteurs dépend essentiellement de l'attention que vous portez à la sécurité de votre site.
===== Notes de version =====
* [18/11/2017] : Harmonisation de la page
===== Auteurs et sources =====
* Auteur : [[:user:montuy337513]]
* Sources : [[http://www.iso.org/iso/fr/french_country_names_and_code_elements|Liste des codes ISO]], [[https://httpd.apache.org/docs/2.2/fr/mod/mod_rewrite.html|Apache2 (MOD_REWRITE)]]
===== Navigation =====
* [[:accueil|Accueil]]
* [[:gestion-site-internet]]
* [[:tutoriel-javascript]]
* [[:tutoriel-html]]
* [[:tutoriel-php-mysql]]
* [[:tutoriel-referencement-seo]]