Changeset 65562 in spip-zone


Ignore:
Timestamp:
Sep 5, 2012, 12:48:55 PM (8 years ago)
Author:
cedric@…
Message:

C'est la rentrée, halte au SPAM :

  • un message avec attribut style ou class (hors code ou cadre) est bloqué à la validation
  • un message avec des liens vers un domaine qui apparait déjà dans 3 spams est bloqué à la validation (nombre configurable par _SPAM_URL_MAX_OCCURENCES)
Location:
_plugins_/nospam
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/nospam/lang/nospam_fr.php

    r57260 r65562  
    1212        'erreur_spam_ip' => 'Trop de commentaires nuit à la qualité !',
    1313
     14        'erreur_attributs_html_interdits' => 'Il n\'est pas permis d\'utiliser les attributs html <tt>class</tt> ou <tt>style</tt>',
     15        'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.',
     16
    1417        // F
    1518        'forum_saisie_texte_info' => 'Pour la mise en forme de votre message, ce formulaire n\'accepte que les raccourcis SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Pour créer des paragraphes, laissez simplement des lignes vides.'
  • _plugins_/nospam/nospam/verifier_formulaire_forum.php

    r64264 r65562  
    1010if (!defined("_ECRIRE_INC_VERSION")) return;
    1111
     12if (!defined('_SPAM_URL_MAX_OCCURENCES')) define('_SPAM_URL_MAX_OCCURENCES',3);
     13
    1214/**
    1315 * Verification supplementaire antispam sur le formulaire_forum
     
    2022        if (!isset($flux['data']['texte'])
    2123                AND $GLOBALS['meta']['forums_texte'] == 'oui'){
     24
     25                $texte = _request('texte');
    2226                include_spip("inc/nospam");
    2327                // regarder si il y a du contenu en dehors des liens !
    24                 $caracteres = compter_caracteres_utiles(_request('texte'));
     28                $caracteres = compter_caracteres_utiles($texte);
    2529                $min_length = (defined('_FORUM_LONGUEUR_MINI') ? _FORUM_LONGUEUR_MINI : 10);
    2630                if ($caracteres < $min_length){
    2731                        $flux['data']['texte'] = _T('forum_attention_dix_caracteres');
     32                }
     33
     34                // regarder si il y a du contenu cache
     35                if (!isset($flux['data']['texte'])){
     36                        $infos = analyser_spams($texte);
     37                        if (isset($infos['contenu_cache']) AND $infos['contenu_cache']){
     38                                $flux['data']['texte'] = _T('nospam:erreur_attributs_html_interdits');
     39                        }
     40                }
     41
     42                // regarder si il y a des liens deja references par des spammeurs
     43                if (!isset($flux['data']['texte'])
     44                  AND isset($infos['liens'])
     45                  AND count($infos['liens'])){
     46
     47                        $hosts = array();
     48                        foreach ($infos['liens'] as $lien){
     49                                $url = extraire_attribut($lien,"href");
     50                                if ($parse = parse_url($url)
     51                                  AND $parse['host'])
     52                                        $hosts[] = $parse['host'];
     53                        }
     54
     55                        $hosts = array_unique($hosts);
     56                        $hosts = array_filter($hosts);
     57
     58                        // pour chaque host figurant dans un lien, regarder si on a pas deja eu des spams avec ce meme host
     59                        // auquel cas on refuse poliment le message
     60                        foreach($hosts as $h){
     61                                if (sql_countsel("spip_forum","statut=".sql_quote('spam')." AND texte LIKE ".sql_quote("%$h%"))>=_SPAM_URL_MAX_OCCURENCES){
     62                                        spip_log("Refus message de forum qui contient un lien vers $h","nospam");
     63                                        $flux['data']['texte'] = _T('nospam:erreur_url_deja_spammee');
     64                                        break; // pas la peine de continuer avec les autres liens
     65                                }
     66                        }
     67                }
     68
     69                if (isset($flux['data']['texte']))
    2870                        unset($flux['data']['previsu']);
    29                 }
    3071        }
    3172
  • _plugins_/nospam/plugin.xml

    r64264 r65562  
    1010        <icon>images/nospam-32.png</icon>
    1111        <licence>(c) 2008 GPL</licence>
    12         <version>0.9.1</version>
     12        <version>1.0.0</version>
    1313        <etat>stable</etat>
    1414        <description><multi>
Note: See TracChangeset for help on using the changeset viewer.