[spip-dev] filtre antispam personnalisable

Hello,

Une idée (suite à un post sur spip-user).

Ne serait-il pas pertinent de donner la possibilité aux users de personnaliser la protection des adresses mail sur leur site.

Actuellement, il existe pour ce faire :

- le filtre antispam(), présent dans la distribution officielle de spip, qui s'applique par exemple à #TEXTE pour y remplace tous les arobases par une chaîne aléatoire;

- Une contrib : http://www.spip-contrib.net/article197.html, pas mal foutue mais qui ne répond pas vraiment au besoin.

Ma proposition : permettre de définir une fonction antispam() personnalisée (dans mes_options.php3), qui sera utilisée au moment du traitement des raccourcis si elle existe.

Ce qui donnerait dans ecrire/inc_texte.php3, aux alentours de la ligne 516, un truc du genre :

»···»···else if (strpos($lien_url, "@") && email_valide($lien_url)) {
»···»···»···if (@function_exists('antispam'))
»···»···»···»···$lien_url = antispam('$lien_url');
»···»···»···$lien_url = "mailto:".$lien_url;
»···»···}

"François Schreuer" wrote:

Ma proposition : permettre de définir une fonction antispam()
personnalisée (dans mes_options.php3), qui sera utilisée au moment du
traitement des raccourcis si elle existe.

Ce qui donnerait dans ecrire/inc_texte.php3, aux alentours de la ligne
516, un truc du genre :

»···»···else if (strpos($lien_url, "@") && email_valide($lien_url)) {
»···»···»···if (@function_exists('antispam'))
»···»···»···»···$lien_url = antispam('$lien_url');
»···»···»···$lien_url = "mailto:".$lien_url;
»···»···}

- - - -

Oui. cela serait utile!
Mais un détail en plus:
dans le cas d'un lien sans "lien_texte"
(c.à dire raccourci comme : [->paolo@nowhere.com]
le lien est recopié dans le lien texte just au-dessus de l'endroit que tu
cites dans inc_texte.php3.

if ((!$lien_texte) and (!$lien_interne)) {
   $lien_texte = ereg_replace('"', '', $lien_url);
. . . .

et dans ce cas il serait important de pouvoir "antispammer" aussi le
$lien_texte.

Par ailleurs, le filtre |antispam existant est difficile à utiliser, car on
peut vouloir utiliser "@" aussi en dehors d'une adresse email (en anglais en
tout cas) même si cette utilisation est rare (plutôt commerciale). Et

antispam n'agit pas sur les liens email mais sur toute occurrence de @.

Paolo

Paolo a écrit :

Mais un détail en plus:
dans le cas d'un lien sans "lien_texte"
(c.à dire raccourci comme : [->paolo@nowhere.com]
le lien est recopié dans le lien texte just au-dessus de l'endroit que tu
cites dans inc_texte.php3.

if ((!$lien_texte) and (!$lien_interne)) {
   $lien_texte = ereg_replace('"', '', $lien_url);

De fait

et dans ce cas il serait important de pouvoir "antispammer" aussi le
$lien_texte.

Par ailleurs, le filtre |antispam existant est difficile à utiliser, car on
peut vouloir utiliser "@" aussi en dehors d'une adresse email (en anglais en
tout cas) même si cette utilisation est rare (plutôt commerciale). Et
>antispam n'agit pas sur les liens email mais sur toute occurrence de @.

Comme avec le nouveau système, on distingue nettement ce qui un mail et ce qui ne l'est pas, on peut faire le remplacement des arobases sans problème (et donc le filtre antispam actuel est plus pertinent).

Deux idées encore :

2° Permettre, avec la fonction antispam, de choisir si on utilise ou pas le "mailto". Autrement dit, tout mail devant être crypté devrait utiliser la syntaxe de spip, à savoir :

[->mail@serveur.com]

ou

[texte à lier->mail@serveur.com]

mais, dans le premier cas, il serait possible de ne pas afficher le lien; le "mailto" étant sans doute un des indicateurs les plus faciles à repérer par les moteurs de spam (dans le second cas, ce ne serait pas pertinent de supprimer le lien).

2° On pourrait mettre une fonction antispam() par défaut, du genre de celle qui est propose par "Coyote" dans sa contrib, en chiffrant les caractères (et qui me semble excellente) :

  function antispam($texte) {
    $texte = ereg_replace("@", " (at) ", $texte);
    $s="";
    for ($i=0;$i<strlen($texte);$i++)
      $s.="&#".ord($texte{$i}).";";
    return $texte;
  }

François

"François Schreuer" wrote:

On pourrait mettre une fonction antispam() par défaut, du genre de
celle qui est propose par "Coyote" dans sa contrib, en chiffrant les
caractères (et qui me semble excellente) :

- - - -

Est-ce que aujourd'hui la plupart des spam robots ne lisent pas déjà les
caractères chiffrés?
Je pense qu'un chiffrage avec du Javascript (par exemple
http://www.pgregg.com/projects/encode/htmlemail.php ) est le minimum. Et le

antispam existant de Spip est peut-être malcommode pour l'utilisateur, mais

il est très sûr.

Mais cela, dans un sens, est une question sécondaire. S'il peut y avoir une
bonne "entrée" en inc_texte.php3, alors il deviendrait possible de faire des
contribs avec des filtres antispam qui s'appliquent globalement aux liens
mail.

Paolo

Paolo a écrit :

Est-ce que aujourd'hui la plupart des spam robots ne lisent pas déjà les
caractères chiffrés?
Je pense qu'un chiffrage avec du Javascript (par exemple
http://www.pgregg.com/projects/encode/htmlemail.php ) est le minimum. Et le
>antispam existant de Spip est peut-être malcommode pour l'utilisateur, mais
il est très sûr.

Rien n'empêche de cumuler les trois : on remplace le @ par une chaîne aléatoire, on chiffre le tout et on balance en javascript (cela dit, est-ce que le javascript passe sur les navigateurs texte et ce genre de choses ?).

Mais cela, dans un sens, est une question sécondaire. S'il peut y avoir une
bonne "entrée" en inc_texte.php3, alors il deviendrait possible de faire des
contribs avec des filtres antispam qui s'appliquent globalement aux liens
mail.

Bien sûr,

François

Rien n'empêche de cumuler les trois : on remplace le @ par une chaîne
aléatoire, on chiffre le tout et on balance en javascript (cela dit,
est-ce que le javascript passe sur les navigateurs texte et ce genre de
choses ?).

On pourrait ajouter une applet java pour couronner le tout ?

>Mais cela, dans un sens, est une question sécondaire. S'il peut y avoir
>une bonne "entrée" en inc_texte.php3, alors il deviendrait possible de
>faire des contribs avec des filtres antispam qui s'appliquent globalement
>aux liens mail.

Il y a tout ce qu'il faut avec le code actuel (CVS). Les points d'entrée de
propre() et de typo() vous permettent de filtrer globalement tout ce que
vous voulez. Quant à empêcher le spam, j'ai peur que nous ayons déjà
plusieurs trains de retard, et que les solutions soient plus côté serveur de
mail que côté "web/harvesters".

Si vous ne voulez pas afficher d'adresses email, n'en affichez pas, et
utilisez le #FORMULAIRE_ECRIRE_AUTEUR...

-- Fil

Quant à empêcher le spam, j'ai peur que nous ayons déjà
plusieurs trains de retard,

Pourquoi ?? Ma nouvelle e-mail (at p*trou.net) n'a pas reçu un spam en
deux mois (par contre, celles en rezo.net et free.fr, c'est la cata...).
Je fais simplement gaffe à ne pas laisser traîner cette e-mail sur des
sites où les adresses sont publiées en clair.

a+

Antoine.

> Quant à empêcher le spam, j'ai peur que nous ayons déjà
> plusieurs trains de retard,

Pourquoi ?? Ma nouvelle e-mail (at p*trou.net) n'a pas reçu un spam en
deux mois (par contre, celles en rezo.net et free.fr, c'est la cata...).
Je fais simplement gaffe à ne pas laisser traîner cette e-mail sur des
sites où les adresses sont publiées en clair.

Sur rezo.net on reçoit (en moyenne, sur des périodes de 5 minutes), 37
mails, dont 17 sont des virus, 13 du spam, et 7 des mails "légitimes" (ou en
tout cas pas détectés comme du spam par les filtres spamassassin et co).

Donc c'est un peu la déprime, côté antispam. Il suffit d'une fois où un
harvester te pique ton adresse, et après par revente de fichiers tu en
reçois de plus en plus. Avec une adresse âgée de deux mois, un domaine peu
exposé (j'imagine qu'il n'y a pas 250 adresses postant depuis @p*trou.net et
depuis longtemps), et en faisant gaffe, tu n'en es pas encore là. Combien de
temps ça va tenir, tu nous diras.

-- Fil