Changeset 90352 in spip-zone


Ignore:
Timestamp:
Jun 19, 2015, 10:37:38 AM (4 years ago)
Author:
cedric@…
Message:

Detection des flooders : quand un utilisateur comptabilise plus de 200 visites d'articles dans une visite,
on note son IP dans le dossier tmp/flood/
Au bout de 24H (redefinissable via la constante _IP_FLOOD_TTL) on la supprime de tmp/flood/
Ces IP reperees peuvent ensuite etre considerees comme des BOT ou meme kickee temporairement, au choix, action a ajouter dans le mes_options.php par exemple

Location:
_core_/plugins/statistiques
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/statistiques/genie/visites.php

    r80104 r90352  
    239239
    240240/**
     241 * Nettoyer les IPs des flooders 24H apres leur dernier passage
     242 */
     243function visites_nettoyer_flood(){
     244        if (is_dir($dir=_DIR_TMP.'flood/')){
     245                include_spip('inc/invalideur');
     246                if (!defined('_IP_FLOOD_TTL')) define('_IP_FLOOD_TTL',24*3600); // 24H par defaut
     247                $options = array(
     248                        'mtime' => $_SERVER['REQUEST_TIME'] - _IP_FLOOD_TTL,
     249                );
     250                purger_repertoire($dir,$options);
     251        }
     252}
     253
     254
     255/**
    241256 * Cron de calcul de statistiques des visites
    242257 *
     
    257272                return (0 - $t);
    258273
     274        // nettoyer les IP des floodeurs quand on a fini de compter les stats
     275        visites_nettoyer_flood();
     276
    259277        return 1;
    260278}
  • _core_/plugins/statistiques/paquet.xml

    r87720 r90352  
    22        prefix="stats"
    33        categorie="statistique"
    4         version="0.6.2"
     4        version="0.6.3"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _core_/plugins/statistiques/public/stats.php

    r88959 r90352  
    9393                ecrire_fichier($fichier, serialize($content));
    9494        }
     95        else {
     96                $flood = sous_repertoire(_DIR_TMP, 'flood') . $GLOBALS['ip'];
     97                @touch($flood);
     98        }
    9599}
    96100
Note: See TracChangeset for help on using the changeset viewer.