[script] Anti Flood, être notifié quand quelqu'un abuse sur votre site

lyonist

WRInaute discret
Bonjour,

Pour ceux qui ont des doutes sur l'abus sur leur sites, ceci peut vous aider :

Ce qui permet de faire:

- Détecter les abus
- Rediriger le visiteur/robots vers une page statique Flood.html
- Recevoir un email contenant l'IP et l'origine (referer) du visite.

Code:
<?php
// By Nejib
if (!isset($_SESSION)) {
    session_start();
}
if($_SESSION['last_session_request'] > time() - 1){
    // s'il y a une autre requête dans 1 seconde.
   // recevoir un email contient l'ip et l'origine du visiteur/robot
    mail("votreemail@email.com", "Flood! ".$_SERVER["REMOTE_ADDR"], "Origine: ".$_SERVER["HTTP_REFERER"]);
    // rediriger vers une page légère flood.html
header("location: /flood.html");
    exit;
}
$_SESSION['last_session_request'] = time();
?>

Bienvenue à toute amélioration.
 

aladdin

WRInaute passionné
@Nejib : si c'est un bot floodeur (donc mal intensionné) il suffit qu'il n'accepte pas le cookie de session du script et il pourra envoyé autant de requêtes qu'il souhaite.

@UsagiYojimbo : Yahoo slurp ne flood par par contre il m'arrivait qu'il ralentisse à mort mon site ou qu'il le rendre complètement indisponnible pendant quelques minutes :lol: j'ai du limité les accès yahoo slurp sur mes pages pour résoudre le problème :p
 

lyonist

WRInaute discret
aladdin a dit:
@Nejib : si c'est un bot floodeur (donc mal intensionné) il suffit qu'il n'accepte pas le cookie de session du script et il pourra envoyé autant de requêtes qu'il souhaite.

Ce n'est pas une cookie, c'est une session, ça n'existe pas "désactiver une session" :mrgreen: , on peut désactiver la cookie (coté client) mais les sessions c'est coté serveur on a pas le control dessus quand on est visiteur (ou robot) seulement si on change l'ip à chaque instant (ça devient un proxy)
 

aladdin

WRInaute passionné
Les sessions utilisent un cookie (de session), désactive tes cookies et teste ton script tu verra que ça passera.
tu peux très bien utiliser des sessions dites "cookieless" , qui elles n'utilisent pas les cookies, mais là il faut conserver le SessionID dans l'url, donc suffit au bot d'apeller toujours la même URL sans le SID et le tour est joué.

cf. http://fr2.php.net/manual/fr/book.session.php


pour une protection anti-flood "presque" efficace, il faut faire les chose à la mano : conserver l'IP du visiteur quelque part (table ou fichier) et vérifier à chaque requette la dernière connexion. mais ça engendrera une charge supplémentaire sur le serveur et les pages.

la meilleure solution ? bannir les IP des mauvais bot c'est radical et efficace :lol: :arrow:
 

Discussions similaires

Haut