Browse Source

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
svn/root/tags/plugins/statistiques/0.6.3 v0.6.3
cedric@yterium.com 8 years ago
parent
commit
cf3f0842c5
  1. 18
      genie/visites.php
  2. 2
      paquet.xml
  3. 4
      public/stats.php

18
genie/visites.php

@ -237,6 +237,21 @@ function calculer_visites($t) {
}
}
/**
* Nettoyer les IPs des flooders 24H apres leur dernier passage
*/
function visites_nettoyer_flood(){
if (is_dir($dir=_DIR_TMP.'flood/')){
include_spip('inc/invalideur');
if (!defined('_IP_FLOOD_TTL')) define('_IP_FLOOD_TTL',24*3600); // 24H par defaut
$options = array(
'mtime' => $_SERVER['REQUEST_TIME'] - _IP_FLOOD_TTL,
);
purger_repertoire($dir,$options);
}
}
/**
* Cron de calcul de statistiques des visites
*
@ -256,6 +271,9 @@ function genie_visites_dist($t) {
if ($encore)
return (0 - $t);
// nettoyer les IP des floodeurs quand on a fini de compter les stats
visites_nettoyer_flood();
return 1;
}
?>

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="stats"
categorie="statistique"
version="0.6.2"
version="0.6.3"
etat="stable"
compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/statistique-32.png"

4
public/stats.php

@ -92,6 +92,10 @@ function public_stats_dist($contexte = null, $referer = null) {
ecrire_fichier($fichier, serialize($content));
}
else {
$flood = sous_repertoire(_DIR_TMP, 'flood') . $GLOBALS['ip'];
@touch($flood);
}
}
?>

Loading…
Cancel
Save