Publié le 25/01/2011
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Bloquer l'acces de son site a une liste d'IP

Spammer, crawler internet, pirate du web, ... il est parfois utile d'interdire l'accès aux pages de son site web . Une technique consiste à mettre en place un filtre sur IP pour bannir certaines adresses.
L'exemple ci-dessous est à placer au début du script PHP.
1. renseigner les IP à bloquer dans la liste $excludeIP,
2. les IP bannies sont redirigées vers une erreur 404 ou vers la page index du site.

Script IPBanner : rediriger les IP d'une liste noire

Le script est un exemple de fonctionnalité qui sera placé en front du serveur. Avant de traiter la requete, la class IpBanner vérifie si la demande est legitime et vaut le coup d'etre traitée.
<?php
/**
 * Bloquer certains IP sur un site internet
 * Les IP bannies sont rediriger vers l'index ou une erreur 404
 * @author fobec 2010
 */
class IPBanner {
    /**
     * Adresse de la page index du site
     */
    const HOMEPAGE="http://monsite.com/index.php";
    /**
     * Liste des IP à exclure
     * @var array 
     */
    private $excludeIP=array("googleBot"=>"66.249.72.49",
            "spammer"=>"195.191.55.53",
            "bingBot"=>"207.46.13.99");
 
    /**
     * Tester la validité de l'IP 
     * @param string $ip optionnel IP à tester
     * @return détail de l'ip bloqué ou null
     */
    public function isAllowed($ip=null) {
        $exclude=null;
        //Trouver l'adresse du visiteur
        if (!isset($ip)) {
            $ip=$_SERVER["REMOTE_ADDR"];
        }
        //parcourir la liste des IP bloquée
        foreach($this->excludeIP as $host=>$address) {
            if ($address==$ip) {
                $exclude=array("host"=>$host,
                        "ip"=>$address);
                break;
            }
        }
        return $exclude;
    }        
 
    /**
     * Rediriger vers une erreur 404
     */
    public function redirect404() {
        header("HTTP/1.1 404 ");
        header("Status: 404 Not Found", false, 404);
        exit(0);
    }
 
    /**
     * Rediriger vers la page index
     */
    public function redirect301() {
        header("Status: 301 Moved Permanently", false, 301);
        header("Location:".self::HOMEPAGE);
        exit(0);
    }
}
 
$ipBanner=new IPBanner();
$testip=$ipBanner->isAllowed();
//l'IP est bannie
if ($testip!=null) {
    if ($testip['host']=="spammer") {
        $ipBanner->redirect404();
    } else {
        $ipBanner->redirect301();
    }
}
 
//l'IP est autorisée
echo "debut du script PHP";
?>

Le plus important dans les scripts de filtre d'ip est la qualité du tri. En effet, si le blocage porte uniquement sur les adresses ip, des internautes peuvent etre bannis sans aucune raison. C'est pourquoi pour bloquer l'accès à des parties de son site, le filtre devra porter sur plusieurs élements:
- une liste d'useragent régulièrement mises à jour,
- un log de visite,
- une base d'ip mise à jour.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar leflo

Publié par leflo

le 10/04/2011 à 01:55:50

Bonjour
Sans parler du fait que l'IP peut ne pas vouloir dire grand chose, en cas de proxy/translation comment on fait? On voit pas et on interdit tout meme si l'utilisateur n'est pas responsable?

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
25/01/2011
Visualisation
vu 4745 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par math dans java

Salut, quelle est la modification a faire pour pouvoir utiliser une webcam usb qui n'est pas une logitech?

Publié par jmc dans CMS

Lien sur mon site, rubriques Téléchargez http://users.skynet.be/jean-marie.capellen/

Publié par Diégo DELPY dans CMS

IL FAUT IMPERATIVEMENT DONNER DES CHEMINS COMPLETS à pFrom et à pTo, sinon ça marche
bizzarrement.
Exemple :

// Chemin relatif : PAS BON !
pFrom := \'Bureau\\Tél...

Publié par Fobec dans java

Les images statiques sont aussi devenues payantes chez Google. Donc sans compte et une cle, l'image ne se chargera pas.
Je vous conseille de passer sur un autre fournisseur de carte, le code re...

Publié par Lathois dans CMS

super impec <br>ca marche du feu de ZEUS<br>depuis le temps que je cherchais ca<br>j ai enfin trouve<br><br>merci Athois