Page 1 sur 1

fonction pour proteger un email contre le spam (basique)

Posté : 12 nov. 2006, 02:48
par momox
Observant divers méthode consistant a repérer les adresses email dans les pages, j'en suis venu a une conclusion, il faut cacher les éléments tel que le "." et le "@".
Donc j'ai codé cette fonction a adapter a vos besoin en modifiant le chemin des images.
function protect_mail($mail)
{
	$mail = str_replace('.', '<img src="design/images/divers/point.png" alt="" />', $mail);
	$mail = str_replace('@', '<img src="design/images/divers/arobaz.png" alt="" />', $mail);
	return $mail;
}
Bonne soirée

Posté : 12 nov. 2006, 03:07
par Ajoloca
Bonsoir,

Le principe du découpage est bon. Remplacer les caractères je ne suis pas sur.

Si tu as un mail (tout à fait valide) du style [email protected] le premier point rique de poser problème, de plus si tu stockes tes mails dans une base de données comment tu vas faire???

Les champs ne sont pas du même type pour les images que pour les caractères.

Tu ne pouras pas échaper aux logiciels qui lisent les touches au clavier (je me souviens plus de leur nom).

Et il-y-a d'autres inconvénients.

Je pense que la meilleure solution est de découper (des la saisie) le mail en 3 parties (proposer 3 champs de saisie et utiliser les images dans la page pour donner la structure).
1 - user (partie avant @)
2 - dom (le domaine entre @ et le .)
3 - tld (Top Level Domain - com - fr - eu -etc)

Posté : 12 nov. 2006, 03:15
par momox
Il n'y a que lors de l'affichage qu'il faut utiliser cette fonction, j'avais oublié de le préciser :)
@+

Posté : 12 nov. 2006, 10:21
par Cyrano
Ça vaut ce que ça vaut, mais pour ma part, j'ai résolu ce problème de façons beaucoup plus tranchée : je mets un lien vers une page d'envoi de message contenant un formulaire et je n'affiche plus aucune adresse de courriel, que ce soit en clair ou déguisée. L'adresse est inaccessible puyisque dans une variable PHP et traitée uniquement coté PHP, jamais coté client. Les robots spammeurs en seront pour leurs frais et je ne me soucie plus de l'avancée technologique des futés pour décoder les adresses maquillées.

Posté : 12 nov. 2006, 12:08
par albat
itou :pouce:

Posté : 12 nov. 2006, 13:45
par momox
Perso, c'est plus pour proteger les adresses msn, jabber et autres dans l'affichage du profil.
Mais bon :)
En tout cas, les utilisateurs sont libres de ne pas les communiquer en sélectionnant "ne pas afficher mon email" dans leur profil.

Posté : 12 nov. 2006, 13:50
par Cyrano
L'internaute lambda ne sait en général pas et surtout ne connait pas tous les vices de l'internet, quant à imaginer que des robots récupèrent des adresses pour les pourrir par la suite, ce n'est pas une notion très évidente non plus. C'est pour ça que je fais en sorte que l'internaute n'ait pas à se poser de question. S'il veut diffuser son adresse, libre à lui, mais ça se fera pas sur les sites que je construis et je n'aurai strictement rien à me reprocher quand il commencera à est harcelé de spams tentant de lui vendre des pillules bleues, des gadgets en tous genres et des placements financiers douteux. :-k

Posté : 13 nov. 2006, 11:59
par Victor BRITO
Salut!

Un robot spammeur est-il capable de déchiffrer une adresse affichée dans le code source comme suit (sans aucun lien hypertexte)? :-k

Code : Tout sélectionner

<p>Adresse&nbsp;: mail*at*domaine.com</p>

Posté : 13 nov. 2006, 12:11
par albat
Nul ne peut connaître l'inventaire exhaustif des robots
et leurs compétences respectives en matière de décryptage d'adresse e-mails.

Cependant, pose-toi la question suivante : est-il difficile de créer un script
qui identifie ce genre de chaine comme étant une adresse e-mail
et qui la traduit dans le format valide ?

Si tu peux le faire, alors quelqu'un d'autre a pu le faire pour un robot...

Posté : 13 nov. 2006, 12:27
par Victor BRITO
Salut!

Comme ça le script? :mrgreen:
<?php 
$courriel='mail*at*domaine.com';
if (preg_match("/^([-_.0-9a-z]+)@([-_.0-9a-z]+)\.([a-z]{2,})$/", $courriel)){
  echo 'Chouette&nbsp;! on va "spammer"&nbsp;! :twisted: ';
}
else{
  echo 'Mince&nbsp;!';
}
?>

Posté : 13 nov. 2006, 13:10
par naholyr
Si je devais faire un script de détection des adresses dans une pages, ce serait une expression de ce style : #([a-zA-Z0-9_\-]){3,}.{0,5}*(?:at|@|a).{0,5}*(?:\.|dot|point).{0,5}*([a-zA-Z0-9_\-]){2,}# non testée, probablement buggée, mais vous voyez l'esprit. Tant qu'on "camoufle" en jouant sur les séparateurs je pense que ça ne vaut que très moyennement (les robots "basiques").

La seule méthode vraiment efficace est celle basée sur Javascript : ça se décode très bien, mais c'est bien plus coûteux en terme de ressources (temps, surtout) et un robot ramasseur de mails, son principal intérêt c'est d'être rapide pour amener une bibliothèque énorme de mails le plus vite possible.

Jusqu'au jour où...

Donc +1 pour cyrano : du moment où une adresse e-mail est affichée de quelque manière que ce soit, elle est vulnérable. Personnellement je remplacerais les emails par des images pour être vraiment peinard ;)

D'ailleurs, un site web proposant un service simple de ce genre pourrait être sympa :
- on choisit un texte, une police, une couleur de texte, une couleur de fond.
- il génère une image présentant ce texte (et rien d'autre) disponible à une adresse "à la tinyurl".

Et voilà comment mettre son adresse mail dans les forums sans craindre le spam (pas besoin non plus d'aller captcha-iser l'image, les robots-spammeurs-OCR ne sont pas encore près d'arriver il faut être réaliste quand-même).