Changeset 61210 in spip-zone


Ignore:
Timestamp:
May 11, 2012, 10:53:19 PM (9 years ago)
Author:
patfr@…
Message:

Lutte contre le spam :

  • meilleur test sur la BDD
  • petite optim de code
  • reconnaissance de l'expression régulière complète "/.../XX"

Rappel :

le Couteau Suisse ajoute à l'expression régulière simple "/.../" l'option /i
cette options n'est donc plus ajoutée à la forme "/.../XX"

Formes de noms exotiques à bloquer par exemple :

"/[a-z]+[A-Z]+[a-z]+[A-Z]+/m"
"/
[A-Z]+[a-z]+[A-Z]+[a-z]+/m"

Tout le monde comprendra que l'expression suivante (sans option) est à éviter formellement :

"/[a-z]+[A-Z]+[a-z]+[A-Z]+/"

car elle est interprétée comme ceci :

"/[a-z]+/i"

Location:
_plugins_/couteau_suisse
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/fonds/test_spam_bd.html

    r54758 r61210  
    22#SET{tab, #ARRAY}
    33<BOUCLE_m(FORUMS){statut?=#ENV*{statut}}{plat}{par date}{inverse}>
    4         #SET{test, #TEXTE*|concat{" ",#TITRE*," ",#AUTEUR*," ",#EMAIL_AUTEUR*}|spam_filtre_de_test|=={ko}}
     4        #SET{test, #ARRAY{0,#TEXTE*,1,#TITRE*,2,#AUTEUR*,3,#EMAIL_AUTEUR*}|spam_filtre_de_test_array|=={ko}}
    55        [(#GET{test}|non)#SET{test, #IP|spam_filtre_de_test_ip|=={ko}}]
    66        [(#GET{test}|oui)#SET{tab, #GET{tab}|push{#ID_FORUM}}]
  • _plugins_/couteau_suisse/outils/spam.php

    r47574 r61210  
    1212                array('<a href=', '</a>', '[url=', '[/url]', '[link=', '[/link]',),
    1313                // des regexpr ou ips (sans delimiteurs)
    14                 array(), array(), array()
     14                array(), array(), array(), array()
    1515        );
    1616        // repere les mots entiers entre parentheses, les regexpr entre slashes et les caracteres unicodes
     
    2121                elseif(preg_match(',^\/(&#)?(.*?)(;?)\/$,', $v, $reg))
    2222                        $t[($reg[2] && $reg[3])?2:1][]=$reg[2];
     23                elseif(preg_match(',^(\/.*\/)([a-z]+)$,i', $v, $reg))
     24                        $t[4][] = $reg[1].preg_replace(',[^imsxeAESUXu],','',$reg[2]);
    2325                else $t[0][] = $v;
    2426        }
  • _plugins_/couteau_suisse/outils/spam_action_rapide.php

    r59861 r61210  
    33// module inclu dans la description de l'outil en page de configuration
    44
    5 //include_spip('inc/actions');
    6 include_spip('inc/actions_compat');
     5include_spip('inc/actions');
    76
    87function spam_filtre_de_test($texte) {
     
    1110        $test = false;
    1211        return cs_test_spam($spam, $texte, $test)?'ko':'ok';
     12}
     13
     14function spam_filtre_de_test_array($textes) {
     15        $spam = cs_lire_data_outil('spam');
     16        $test = false;
     17        foreach($textes as $texte) cs_test_spam($spam, $texte, $test);
     18        return $test?'ko':'ok';
    1319}
    1420
  • _plugins_/couteau_suisse/outils/spam_options.php

    r39078 r61210  
    4343
    4444function cs_test_spam(&$spam, &$texte, &$test) {
    45         foreach($spam[0] as $m) $test |= strpos($texte, $m)!==false;
    46         if(!$test && $spam[1]) $test = preg_match($spam[1], $texte);
    47         if(!$test && $spam[2]) {
     45        foreach($spam[0] as $m)
     46                if($test |= strpos($texte, $m)!==false) return true;
     47        if($spam[1])
     48                if($test = preg_match($spam[1], $texte)) return true;
     49        if($spam[2]) {
    4850                include_spip('inc/charsets');
    49                 $test = preg_match($spam[2], charset2unicode($texte));
     51                if($test = preg_match($spam[2], charset2unicode($texte))) return true;
    5052        }
     53        if($spam[4]) foreach($spam[4] as $m)
     54                if($test = preg_match($m, $texte)) return true;
    5155        return $test;
    5256}
  • _plugins_/couteau_suisse/paquet.xml

    r60201 r61210  
    22        prefix="couteau_suisse"
    33        categorie="maintenance"
    4         version="1.8.62"
     4        version="1.8.63"
    55        etat="stable"
    66        compatibilite="[1.9.2;3.0.99]"
  • _plugins_/couteau_suisse/plugin.xml

    r60201 r61210  
    33        <slogan>... ou plus de fonctionnalit&#233;s pour SPIP !</slogan>
    44        <icon>img/couteau-50.gif</icon>
    5         <version>1.8.62</version>
     5        <version>1.8.63</version>
    66        <version_base>1.1</version_base>
    77        <auteur>Patrice Vanneufville
Note: See TracChangeset for help on using the changeset viewer.