SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

61 visiteurs en ce moment

fontsizeup fontsizedown
[26 commentaires]

Mailcrypt, système antispam

lundi 22 janvier 2007, par paolo

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati
0 vote

Ce système de traitement des liens vise trois objectifs :
- protéger efficacement les adresses email [1] contre les robots spam ;
- garder des liens e-mails directement utilisables sur la page ;
- avoir une version imprimée de la page qui présente tous les liens (e-mail et web) en clair.

Note (24/09/2007) : Ce sont maintenant deux outils du plugin Couteau Suisse qui reprennent et améliorent le fonctionnement de ce plugin qui est désormais périmé. Les deux outils sont Mailcrypt et Liens en clair. Ce dernier s’occupe de l’affichage des pages imprimables.

Note (10/6/2007) : avec l’aide d’Alexis Roussel ce script a été converti en plugin pour Spip 1.9.x ; il est disponible sur la zone parmi les plugins stables.

Le plugin est évidemment beaucoup plus simple à installer/désinstaller que la contrib pour Spip 1.8.3. Mais comme le plugin fonctionne essentiellement de la même façon que l’ancienne contrib, je laisse l’explication de cette dernière en place sur cette page...

Introduction à la contrib pour Spip 1.8.3

Cette méthode [2] ne touche pas au noyau de Spip. Si, à première vue, elle semble compliquée, c’est parce que l’installation touche à plusieurs fichiers :

  1. ecrire/mes_options.php3 (script pour transformer les liens) ;
  2. mes_javascripts.js (script pour décoder les liens) ;
  3. commat.gif (image d’une arobase) ;
  4. création d’une squelette « version imprimable » ;
  5. squelette(s) (ajouter 2 lignes : inclusion de mes_javascripts.js et lien pour appeler la version imprimable).

Ces 5 étapes sont décrites en détail plus bas.

Description

La page à l’écran

Un raccourci e-mail [->quelquun@autre.part.org] est d’habitude converti en HTML de la façon suivante :
<a href="mailto:quelquun@autre.part.org" class="spip_out">quelquun@autre.part.org</a> — ce qui laisse le champ ouvert pour les robots spam.

Intercepté par le code que nous mettons dans mes_options.php3 ce lien va être réécrit pour devenir : <a href="#" title="quelquun..&aring;t..autre.part.org" onClick="location.href = dolink(this.title); return false;">[Email]</a>

Il n’y a plus d’arobase ni de « mailto» pour orienter les robots. Lorsque le visiteur clique sur le lien c’est le JavaScript onClick qui est exécuté. Ce script reconstitue le lien.

Et si le visiteur n’a pas JavaScript ? (Il s’agit vraiment de très peu de personnes.) C’est certain : ils ne pourront pas utiliser le lien. Ils peuvent pourtant lire l’adresse en survolant le lien avec la souris. Pour aider ceux qui ont ce problème, je mets un mot explicatif sur la page « technique » du site :

Parce que le spam est devenu un problème grandissant, nous sommes très prudents dans la manière de mettre publiquement à disposition des adresses e-mail. Celles-ci ne figurent pas sur les pages de ce site, mais sont créées uniquement au moment où le visiteur clique sur un lien. Les visiteurs qui n’ont pas Javascript ou un programme e-mail ne pourront pas utiliser le lien. Cependant, quand le curseur passe sur le lien, un « infobulle » apparaît avec l’adresse e-mail (sous une forme difficile à lire pour les robots spam, mais dont la plupart des visiteurs pourront faire usage).

La version imprimable

Cela ne sert à rien d’imprimer une page d’informations avec les adresses e-mail cachées. Cette page, par exemple, ne vaudrait pas grand-chose reproduite sur du papier.

Pour la version imprimable donc (cliquer sur le lien « version imprimable ») on transforme le lien autrement. On rend l’adresse e-mail visible (dans le cas où elle a été cachée derrière le lien) en remplaçant l’arobase avec une petite image d’arobase. L’adresse s’imprime donc sur papier, mais il n’y pas de lien cliquable à l’écran de cette version imprimable. Tant qu’on y est, on fait la même chose pour les liens web. [3]

Installation

1. Le script principal
Dans un fichier mes_options.php3 (à créer, si tu n’en a pas déjà, dans le répertoire /ecrire) ajouter cette fonction [4] :

2. Le JavaScript qui recrée le lien
Mettre cette fonction dans un fichier mes_javascripts.js [5] annexe qui sera reliée depuis vos squelettes :

3. L’image de l’arobase (pour version imprimable)
Placer l’image de l’arobase (commat.gif) [6] dans le répertoire /IMG.

4. Squelette « version imprimable »
Créer un couple de fichiers pour le squelette de version imprimable (imprim.php3 et imprim.html). Pour ce qui concerne l’antispam ce squelette n’a besoin de rien en particulier.

5. Dans tes squelettes [7]

- Dans la partie <head> de ton squelette, mettre la ligne [8] :

- Ajouter un lien qui appellera l’article avec le squelette de « version imprimable ». Par exemple :

Note : Cette méthode va attraper presque tous les adresses e-mail : celles résultantes d’un raccourci SPIP, comme celles entrées à la main en HTML [9]. Pour une sécurité plus grande, il est possible d’ajouter le filtre |antispam à toutes les balises qui sont susceptibles de contenir des adresses e-mail, et ceci aussi bien dans le squelette normal que dans le squelette "imprim.html". Par exemple, [(#TEXTE|antispam)]. Ce filtre inclus dans SPIP transforme toutes les arobases en une série aléatoire de 3 caractères.

Fichiers à télécharger

Dans le fichier ci-joint se trouvent les fichiers avec tout le code noté ci-dessus.

Pour mieux comprendre ou améliorer le système
Regarder les lignes marquées par des commentaires avec trois étoiles *** dans le fichier mes_options.php3 et dans le squelette article.html.

Notes

[1] Il s’agit ici des adresses entrées dans le texte des articles. Pour offrir la possibilité d’envoyer un e-mail à l’auteur d’un article, il est de toute façon préférable d’utiliser le formulaire #FORMULAIRE_ECRIRE_AUTEUR.

[1] Il s’agit ici des adresses entrées dans le texte des articles. Pour offrir la possibilité d’envoyer un e-mail à l’auteur d’un article, il est de toute façon préférable d’utiliser le formulaire #FORMULAIRE_ECRIRE_AUTEUR.

[2] Ce système représente un murissement de la contrib déjà publié en anglais. D’autres contribs, notamment celle-ci ont montré comment crypter la source HTML des adresses e-mail. Des robots spam peuvent maintenant lire un tel cryptage, je pense. C’est pourquoi j’utilise le système présenté ici.

[3] La feuille de style impression.css distribuée avec Spip fait également apparaître le lien lorsqu’une page est imprimée, au moyen de l’instruction :

a:after {
    content: " [" attr(href) "]";
}

Le désavantage principal de cette méthode est que Internet Explorer ignore cette instruction CSS. Créer un squelette séparé pour l’impression permet non seulement de contourner ce problème, mais il devient également facile d’ajuster les styles, les polices, la manière dont le texte se comporte par rapport aux images, etc.

[4] Le nom de ce fichier et le nom de la fonction sont obligatoirement à laisser tels quels. Pour en savoir plus sur les fonctions qui interviennent à des « points d’entrée » dans le traitement appliqué par SPIP aux textes, voir ce message et aussi cet article (partie « Méthode »).

[5] Cela peut être n’importe quel nom de fichier...

[6] Ou fais un graphique toi-même de la taille qui te convient. Pour creer l’image de l’arobase on peut utiliser Latex, en tapant <math>$@$</math> (merci à rpapa pour l’idée).

[7] Dans cet exemple, seul le squelette article.html a été protégé. Si des adresses e-mail risquent d’être visibles dans d’autre squelettes, il faut penser à faire la même chose dans ces squelettes.

[8] Prends soin d’indiquer avec le src= le chemin d’accès à ce fichier dans le cas où il ne se trouve pas dans le même répertoire que le squelette.

[9] Pour filtrer les adresses écrites directement en HTML dans un article il est nécessaire d’utiliser une version de SPIP du 7/4/2005 ou ultérieur.

Retour en haut de la page

26 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3

  • Répondre à ce message

    2 décembre 10:41 , par Laurent Mirioni

    Bonjour,

    J’ai chaque mailto derrière une image. Le problème c’est que le "alt" affiche correctement les adresses mail sous IE7, mais sous Firefox (2.0 ou 3.0), le même "alt" s’affiche pour tous, en l’occurrence le premier... Ma page est ici : http://www.lpp.fr/spip.php?rubrique6

  • Répondre à ce message

    24 septembre 2007 09:53 , par paolo

    Il serait interessant de préciser dans l’article que mailcrypt est une lame du couteau suisse

    Maintenant que la fonction pour les pages imprimables a été ajoutée au couteau suisse (voir ici), j’ai ajouté cette mention en tête d’article.

  • Répondre à ce message

    24 septembre 2007 09:49 , par paolo

    Bonjour, Je ne suis pas sûr que les robots ne sauraient pas lire des adresses comme ça. Dès qu’il il existe un "@" en texte dans la page le danger de la récuperation de l’adresse est sensiblement plus grand.

    Une solution avec des images se discute (voir ici, mais, pour l’instant je ne la trouve pas très convaincant.

  • Répondre à ce message

    5 septembre 2007 14:41 , par aedrin

    Je reposte ce que j’ai posté dans le forum du couteau suisse, car je ne sais pas trop quel forum est le plus adapté...

    Bonjour, j’utilise (entre autre) l’outil mailcrypt du couteau suisse.

    J’ai une proposition d’amélioration lorsque on a un lien mail sans texte.

    Imaginons que le mail soit toto@truc.net Au lieu de mettre [Email] comme texte on pourrait mettre : toto<span class="mc_invisible">..</span>@<span class="mc_invisible">..</span>truc.net

    avec évidemment le style span.mc_invisible { display: none; }

    à l’affichage (et à l’impression ;-) ) ça affiche simplement le mail, le lien de type mailto: est toujours géré par le javascript et les robots (d’après http://aspirine.org/cgi-bin/trouvem... ) ne trouvent pas le mail...

    Bref, tout le monde est content !

    Qu’en pensez-vous ?

    Aedrin

    PS : par contre je suis une bique en PHP donc je ne sais pas quoi proposer directement en code....

  • Répondre à ce message

    26 août 2007 22:07 , par jacques

    Est-ce que j’ai quand même besoin d’ajouter (ou plutôt le laisser puisque je l’ai déjà mis) tout ce qui est décrit ici plus haut (l’entrée dans mes options, le fichier javaScript, l’image @ etc) ou est-ce que tout cela est compris dans le couteau suisse ?

    Le couteau suisse comprend le système de filtrage des mails qui marche bien.

    Avec le plugin mailcrypt comme avec le couteau suisse rien à faire d’autre qu’à activer soit la lame du couteau soit le plugin... Ca se fait en deux clics.

    Par contre à ma connaissance le couteau suisse ne propose pas le js d’impression associé, qui moi me semble indispensable. Pour que ça fonctionne il faut que tu penses à mettre la balise (je ne sais plus le nom, c’est expliqué dans le plugin) dans tes squelettes.

  • Répondre à ce message

    26 août 2007 20:33 , par asso.bachant

    Pour info le zip de l’article bug avec la 1.9.3 ; pour le telechargement auto

    il demande un repertoire /lib a la racine du site avec les droits en 777 et se telecharge dedans ; donc coté interface plugins on ne peu le voir....

    sinon il est dit : note (10/6/2007) : avec l’aide d’Alexis Roussel ce script a été converti en plugin pour Spip 1.9.x ; il est disponible sur la zone parmi les plugins stables.

    ors le plugin ne se trouve pas coté "stable" mais coté "test" ; donc toujours pareil pour la mise a jour auto nada puisque l’adresse http://files.spip.org/spip-zone/mai... n’existe pas.

    Il serait interessant de préciser dans l’article que mailcrypt est une lame du couteau suisse ; d’ailleur je m’en vais l’installer pour voir ...

    @micalement stéphane

  • Répondre à ce message

    24 août 2007 20:20 , par paolo

    Je crois que tout est intégré dans le couteau. (Je n’ai pas pu l’installer encore par manque de temps.)

  • Répondre à ce message

    24 août 2007 20:12 , par joz

    ok, merci. Est-ce que j’ai quand même besoin d’ajouter (ou plutôt le laisser puisque je l’ai déjà mis) tout ce qui est décrit ici plus haut (l’entrée dans mes options, le fichier javaScript, l’image @ etc) ou est-ce que tout cela est compris dans le couteau suisse ?

    joz

  • Répondre à ce message

    24 août 2007 19:52 , par paolo

    Bonsoir, depuis quelque temps cette fonctionnalité est intégré dans le plugin "Couteau Suisse" http://www.spip-contrib.net/Le-Cout....

    Je pense que c’est cette version là qu’il faudrait utilisée désormais.

  • Répondre à ce message

    24 août 2007 19:19 , par joz

    Bonjour,

    comme cette contrib n’était apparemment pas écrit pour un plugin, si je comprend bien le début de cet article, je ne sais pas qu’est-ce qui est encore nécessaire à l’installation ou qu’est-ce qui diffère...

    J’ai suivi la description en entier et les adresse mails fonctionnent bien.

    Seulement la version imprimable ne fonctionne pas bien, l’image gif n’apparait pas. Dans le code source le src de l’image est vide

    Qu’est-ce qui pourrait être le problème ?

    Merci pour cette contrib et pour vos éventuels réponses.

    Joz

Pages 1 | 2 | 3

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0