coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
5 mai 2006 à 22:49
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
12 juin 2006 à 12:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 juin 2006 à 12:58
vive IE...
xque19
Messages postés47Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention19 novembre 20061 12 juin 2006 à 11:17
oui je sais, mais c pas compatible avec les navigateurs. En tout cas pas dans l'immédiat.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 7 juin 2006 à 17:34
png gère aussi la transparence...
xque19
Messages postés47Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention19 novembre 20061 7 juin 2006 à 17:06
J'ai changé quelques éléments, çà peut peut-être interesser quelqu'un, au lieu du png, c'est du gif transparent comme çà on peut mettre n'importe quelle couleur de fond dans l'HTML. ^_^
<?
//dossier où sont stockées les images (modifiable ..)
$dossier=".";
//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";
//affichage d'une image png avec un texte
function imagemail($texte){
global $fichier;
global $dossier;
//création de l'image avec l'adresse (si ce n'a pas déjà été fait antérieurement)
creeimage($texte);
echo "";
}
//crée une image contenant l'adresse $texte et l'enregistre sous le nom md5($texte) où md5 est une fonction de hachage
//(évite ainsi que l'adresse apparaisse en clair dans la page html sous la forme )
function creeimage($texte)
{
global $fichier;
global $dossier;
//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";
//on vérifie que l'image n'a pas déjà été créée dans le dossier spécifié ($dossier)
if (file_exists($fichier))
{
return;
}
//si ce n'est pas le cas on crée l'image
// definition des dimensions
$iWidth=strlen($texte)*8;
$iHeight=20;
//choix de la police
$iCurrentFont=3;
$Img = imagecreate($iWidth, $iHeight);
//inscription du texte dans l'imaqe
imagestring($Img, $iCurrentFont, 5, 5,$texte, $text);
imagecolortransparent($Img, $background);
// creation de l'image et sauvegarde dans le dossier spécifié sous le nom md5($texte)
imagegif($Img,$fichier);
//libération de la mémoire vive occupée par l'image
imagedestroy($Img);
}
?>
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 17 mai 2006 à 23:14
Bon, la version avec variable sesssion ne marche pas sous firefox. Pourquoi ? aucune idée.
Du coup j'ai encore changé le code : cette fois j'utilise md5 (suggestion de "kankrelune") pour masquer l'adresse mail dans
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 16 mai 2006 à 01:16
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 10 mai 2006 à 04:34
avis aux plus malins que moi :
après une assez longue recherche j'ai du ajouté la ligne <script></script> dans test.php. En effet si on a deux pages du genre test.php avec des listes d'adresses les images de l'une se retrouvent dans l'autre quand on passe d'une page à l'autre.
A force de googliser et de tâtonner j'ai ajouté <script></script> dans test.php qui résout le problème. Mais je n'ai aucune idée du pourquoi !!
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 8 mai 2006 à 10:47
Une remarque à propos des méthodes de cryptage :
Quelle que soit la méthode (javascript/css/image) à partir du moment où l'adresse apparaît sur la page html finale un ocr doit pouvoir la lire.
Il semble que les spammers n'utilisent pas encore cette technique pour les adresses.
Un article intéressant à ce sujet (en anglais) : www.cryptologie.com/SpamFull.pdf. Les auteurs ont testé différents types de masquage d'adresses mails. En fait toutes marchent sauf certains javascript simples et les solutions où il suffit de cliquer (sur une image, un lien d'animation flash) pour lancer le client de messagerie.
Plus intéressant : la position de l'adresse dans le site est importante, s'il faut suivre des liens non évidents avant de tomber sur l'adresse les spammeurs n'iront pas la chercher.
ceci dit, avec une solution "image" comme celle que je propose vous empêchez les malvoyants de récupérer facilement votre adresse alors que les autres solutions (javascript/CSS, formulaires) le permettent.
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 6 mai 2006 à 21:52
Mais bon sang c'est bien sûr ! j'avais mis une seul adresse sur la page de test et j'ai pas vu le bug.
J'ai donc mis la version corrigée avec création automatique d'autant de variables sessions que d'adresses à coder (textemail1, textemail2, etc) et passage de l'indice à "creeimage.php".
Cette fois j'ai vérifié avec plusieurs adresses ;-)
Par rapport à ton code le seul intérêt est la flexibilité : je peux utiliser n'importe où une ligne comme <?php imagemail('toto@aol.com') ?> ou <?php imagemail($monadresse) ?> que $monadresse provienne d'une base de données ou non.
Et merci encore pour le debugage.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 6 mai 2006 à 17:30
avec ça, t'en affiches qu'une par page... il te faut aussi un index passé en GET...
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 6 mai 2006 à 17:07
Je n'ai pas tout de suite vu la portée de la remarque de "momo". Effectivement avec la variable session, on n'a plus d'adresse mail en clair dans le code html. J'ai donc modifié en conséquence et cette fois ça me semble correct.
Merci encore pour les commentaires.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 6 mai 2006 à 15:37
coplanacu
Messages postés22Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention17 mai 2006 6 mai 2006 à 14:21
coucou747 : oups ... autant pour moi pour ce masquage qui n'en n'est pas un.
Quand j'ai écrit ce script hier je n'avais pas vu le tien et pourtant j'avais fait une recherche sur le site. c'est seulement après que phpcd m'a signalé ton code. En plus en une lecture trop rapide de ton code je me suis dit "pourquoi il utilise une base de données, c'est bien compliqué" et donc j'ai laissé mon code. Je n'ai vraiment aucune excuse ;-(
Conclusion : je vais adopter ta solution, je renvoie donc à la page de ton code et je vais de ce pas y ajouter un commentaire.
Remarque : c'est en regardant cette (bonne) page "http://www.sitepoint.com/article/toughen-forms-security-image" sur la génération automatique de formulaire avec code à reconnaître dans une image que j'ai pensé à ça.
momoxe
Messages postés71Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention12 août 2006 5 mai 2006 à 23:37
Autant envoyer les données a l'image a l'aide d'une variable de session, ca serait un peu plus pratique.
@+
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 5 mai 2006 à 22:49
euh.... tu ne protèges rien...
tu dois faire :
mais bon, évidement, l'adresse est dans le code html...
t'as une source un peu en dessous, je préfèrais ma solution
12 juin 2006 à 12:58
12 juin 2006 à 11:17
7 juin 2006 à 17:34
7 juin 2006 à 17:06
<?
//dossier où sont stockées les images (modifiable ..)
$dossier=".";
//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";
//affichage d'une image png avec un texte
function imagemail($texte){
global $fichier;
global $dossier;
//création de l'image avec l'adresse (si ce n'a pas déjà été fait antérieurement)
creeimage($texte);
echo "";
}
//crée une image contenant l'adresse $texte et l'enregistre sous le nom md5($texte) où md5 est une fonction de hachage
//(évite ainsi que l'adresse apparaisse en clair dans la page html sous la forme )
function creeimage($texte)
{
global $fichier;
global $dossier;
//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";
//on vérifie que l'image n'a pas déjà été créée dans le dossier spécifié ($dossier)
if (file_exists($fichier))
{
return;
}
//si ce n'est pas le cas on crée l'image
// definition des dimensions
$iWidth=strlen($texte)*8;
$iHeight=20;
//choix de la police
$iCurrentFont=3;
$Img = imagecreate($iWidth, $iHeight);
// fond blanc
$background = imagecolorallocate($Img, 255, 255, 255);
// Texte noire
$text = imagecolorallocate($Img, 0, 0, 0);
//inscription du texte dans l'imaqe
imagestring($Img, $iCurrentFont, 5, 5,$texte, $text);
imagecolortransparent($Img, $background);
// creation de l'image et sauvegarde dans le dossier spécifié sous le nom md5($texte)
imagegif($Img,$fichier);
//libération de la mémoire vive occupée par l'image
imagedestroy($Img);
}
?>
17 mai 2006 à 23:14
Du coup j'ai encore changé le code : cette fois j'utilise md5 (suggestion de "kankrelune") pour masquer l'adresse mail dans
16 mai 2006 à 01:16
http://www.phpcs.com/codes/CREATION-FICHIER-WAV-POUR-EPELER-MOT_37607.aspx
10 mai 2006 à 04:34
après une assez longue recherche j'ai du ajouté la ligne <script></script> dans test.php. En effet si on a deux pages du genre test.php avec des listes d'adresses les images de l'une se retrouvent dans l'autre quand on passe d'une page à l'autre.
A force de googliser et de tâtonner j'ai ajouté <script></script> dans test.php qui résout le problème. Mais je n'ai aucune idée du pourquoi !!
8 mai 2006 à 10:47
Quelle que soit la méthode (javascript/css/image) à partir du moment où l'adresse apparaît sur la page html finale un ocr doit pouvoir la lire.
Il semble que les spammers n'utilisent pas encore cette technique pour les adresses.
Un article intéressant à ce sujet (en anglais) : www.cryptologie.com/SpamFull.pdf. Les auteurs ont testé différents types de masquage d'adresses mails. En fait toutes marchent sauf certains javascript simples et les solutions où il suffit de cliquer (sur une image, un lien d'animation flash) pour lancer le client de messagerie.
Plus intéressant : la position de l'adresse dans le site est importante, s'il faut suivre des liens non évidents avant de tomber sur l'adresse les spammeurs n'iront pas la chercher.
ceci dit, avec une solution "image" comme celle que je propose vous empêchez les malvoyants de récupérer facilement votre adresse alors que les autres solutions (javascript/CSS, formulaires) le permettent.
6 mai 2006 à 21:52
J'ai donc mis la version corrigée avec création automatique d'autant de variables sessions que d'adresses à coder (textemail1, textemail2, etc) et passage de l'indice à "creeimage.php".
Cette fois j'ai vérifié avec plusieurs adresses ;-)
Par rapport à ton code le seul intérêt est la flexibilité : je peux utiliser n'importe où une ligne comme <?php imagemail('toto@aol.com') ?> ou <?php imagemail($monadresse) ?> que $monadresse provienne d'une base de données ou non.
Et merci encore pour le debugage.
6 mai 2006 à 17:30
6 mai 2006 à 17:07
Merci encore pour les commentaires.
6 mai 2006 à 15:37
là, t'as un code assez recherché, et en même temps pas forcément beaucoup mieux, ça dépend de ton site...
6 mai 2006 à 14:21
Quand j'ai écrit ce script hier je n'avais pas vu le tien et pourtant j'avais fait une recherche sur le site. c'est seulement après que phpcd m'a signalé ton code. En plus en une lecture trop rapide de ton code je me suis dit "pourquoi il utilise une base de données, c'est bien compliqué" et donc j'ai laissé mon code. Je n'ai vraiment aucune excuse ;-(
Conclusion : je vais adopter ta solution, je renvoie donc à la page de ton code et je vais de ce pas y ajouter un commentaire.
Remarque : c'est en regardant cette (bonne) page "http://www.sitepoint.com/article/toughen-forms-security-image" sur la génération automatique de formulaire avec code à reconnaître dans une image que j'ai pensé à ça.
5 mai 2006 à 23:37
@+
5 mai 2006 à 22:49
tu dois faire :
mais bon, évidement, l'adresse est dans le code html...
t'as une source un peu en dessous, je préfèrais ma solution