Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > [Galerie] Réalisation de CAPTCHAs > Lecture du sujet

[Galerie] Réalisation de CAPTCHAs

On veut les votres

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  37  38  39  40 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  37  38  39  40 
Hors ligne Droup # Posté le 02/12/2008 à 17:26:15
Groupe : Membres
Reprise du dernier message de la page précédente :
Je ne sais pas analyser une image, mais j'ai une petite connaissance là-dessus, et n'importe quel police lisible par l'homme, et lisible par une machine (Je parle sans ajout).
Le fait qu'elle soit inclinée ne gène en rien, tu pourrais même t'amuser à retourner totalement la lettre, que la machine décoderai la lettre (Contrairement à l'humain).

ET comme je l'ai dit, tu analyses couleur par couleur, puis tu supprimes ce qui est une ellipse (ou qui ne ressemble pas à une lettre), et tu gardes ce qui ressemble à une lettre.
Il ne reste plus qu'à la lire dans l'ordre de l'image !
Hors ligne didoud04 # Posté le 04/12/2008 à 14:13:13
Carpe Diem
Avatar
Groupe : Membres
Bonjour,

J'ai inséré le code pour le captcha (qui est indiqué dans la page 1) pour mon livre d'or seulement je n'ai que l'image de fond qui s'affiche. Il me manque le texte. Quelqu'un pourrait me dire comment je peux y remédier?

Merci!
Hors ligne Thulium # Posté le 04/12/2008 à 15:38:12
Avatar
Groupe : Membres
t'as la police ?

"Keyboard not found, press F1 to resume."
Code : Console
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ echo "C'est bien mon fils, tu es devenu un Geek !"
 
Hors ligne ThePooh # Posté le 04/12/2008 à 16:14:29
Ordre et Beauté
Avatar
Groupe : Membres
Les captchas je suis de moins en moins fan, la méthode champ hidden est tout aussi efficace et surtout beaucoup moins contraignante pour les utilisateurs...
http://www.rustylime.com/show_article.php?id=338


Image utilisateur
Avancement Design: ||||||||||||||||||||||
Avancement Code : |||||||||||||||||||
 
Hors ligne didoud04 # Posté le 04/12/2008 à 16:30:37
Carpe Diem
Avatar
Groupe : Membres
Sur mon ordi oui j'ai la police.
Il faut que je l'intègre à mon code? Comment fait-on? (ca fait 2 ans que j'ai plus fait de php...).
Merci :-°
Hors ligne rom1504 # Posté le 04/12/2008 à 18:23:08
Groupe : Membres
Citation : Jazyx
Les captchas je suis de moins en moins fan, la méthode champ hidden est tout aussi efficace et surtout beaucoup moins contraignante pour les utilisateurs...
http://www.rustylime.com/show_article.php?id=338


C'est moins contraignant mais c'est inutile même contre les bots non ciblés ;)

Edit: En fait je viens de lire l'article et c'est peut être pas mal contre les bots non-ciblés en fait, j'avais lu trop vite et donc j'avais cru que c'était juste avec un champ de type hidden. Par contre c'est sur que contre un bot ciblé ça ne tiendrait pas longtemps.
Édité le 04/12/2008 à 18:30:33 par rom1504

Mon portfolio - client_irc : mon client irc - Présentation sur le sdz de ce client irc - vraiCalculatrice : une calculatrice qui permet d'effectuer vos calculs en une seule fois
 
Hors ligne aircrack # Posté le 04/12/2008 à 19:06:00
Groupe : Membres
Bonsoir,

je pense que c'est une piste à exploiter. En nommant les champs hidden avec des caractères aléatoire (de même que les autres champs), en masquant certains champs grâce au CSS, je pense que ça pourrait faire une protextion fort efficace :) .

Cordialement,
aircrack
Hors ligne Droup # Posté le 04/12/2008 à 20:25:40
Groupe : Membres
Ce type de protection fonctionne très bien pour un simple bot, mais contre un bot ciblé il n'y fera rien.

Je réfléchis actuellement sur un captcha avec un pavé numérique, où les chiffres s'affichent aléatoirement (Comme pour le site de certaines banque). Puis proposer de recopier un captcha (Qu'il faille déjà lire), mais en utilisant ce pavé numérique, où les chiffres eux-même serait transformés. Peut-être une utilisation en AJAX, pour chaque chiffre serait ajouté.

Certes ce type de captcha prends de la place, mais peut-je pense, être assez sécurisant.
Hors ligne Artefact2 # Posté le 04/12/2008 à 20:28:28
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : Droup
Ce type de protection fonctionne très bien pour un simple bot, mais contre un bot ciblé il n'y fera rien.

Je réfléchis actuellement sur un captcha avec un pavé numérique, où les chiffres s'affichent aléatoirement (Comme pour le site de certaines banque). Puis proposer de recopier un captcha (Qu'il faille déjà lire), mais en utilisant ce pavé numérique, où les chiffres eux-même serait transformés. Peut-être une utilisation en AJAX, pour chaque chiffre serait ajouté.

Certes ce type de captcha prends de la place, mais peut-je pense, être assez sécurisant.


Bof, un bot peut aussi bouger la souris et analyser l'image du bureau qu'il voit :D
 
Hors ligne Droup # Posté le 04/12/2008 à 21:36:01
Groupe : Membres
Voici une exemple, fait rapidement avec photofiltre de ce que j'aimerai faire :
Image utilisateur
Bon, ceci n'est qu'un exemple, donc ne faites pas attention au captcha nul que j'ai fait, j'en utiliserai un meilleur.
Le but de ce captcha est d'obliger les visiteurs à cliquer sur le pavé numérique le nombre affiché, et à chaque clique une requête AJAX est envoyé, enregistré puis lors de l'envoie du formulaire, on vérifie le captcha.

Que pensez vous de cette idée ?
Hors ligne aircrack # Posté le 05/12/2008 à 23:02:56
Groupe : Membres
Bonsoir,

ton idée me paraît bof :
  • le bot peut analyser les caractères quand même ;
  • tu auras beoin d'un langage côté client (si je dis JavaScript j'ai peu de chances de me tromper j'imagine ;) ) qui peut être desactivé chez tes visiteurs
  • un captcha comme ça, c'est long :D


Cordialement,
aircrack
Hors ligne Jeremie64 # Posté le 06/12/2008 à 05:05:32
Get over it !
Avatar
Groupe : Membres
Surtout que comme d'habitude, un bon bot ciblé passera sans problème. Pourquoi se casser la tête à faire des captchas super long à mettre en oeuvre et qui au fond, finalement s'avèrent être inutile?

On fait juste perdre le temps du visiteur, sans pour autant régler le problème.

Bref, on tourne en rond.
Édité le 06/12/2008 à 05:09:05 par Jeremie64


Coding is more than a job, more than hobby, more than activity, it's a lifestyle !

PHP is a powerful programming language, if you know how to use it...



 
Hors ligne Droup # Posté le 06/12/2008 à 08:21:47
Groupe : Membres
Et si à la place de lettre et de chiffre, je met des images, bien distinctes pour l'homme (un homme, un animal, un meuble, etc. en noir est blanc), rajouter par dessus du bruit, puis faire la même chose avec des boutons qui bougent ?

Car un bot ciblé devrait trouvé malgré le bruit à quoi ressemblerai l'image, puis retrouvé malgré le bruit sur les boutons, le bouton en question.
L'humain, voyant des objets bien différents, mettrait peu de temps à discerner la différence entre chaque images et trouverai facilement le bouton.

Par contre, je pense que se soit possible pour le programmeur, d'estimer un pourcentage d'erreur entre chaque image, et de la sorte trouver le bouton en question ?
Édité le 06/12/2008 à 08:23:05 par Droup
Hors ligne Droup # Posté le 08/12/2008 à 13:50:30
Groupe : Membres
Voici une petite image de ce que pourrait donner mon idée avec des objets :
Image utilisateur

Faire une bibliothèque d'image, plus ou moins grande, puis demander aux visiteurs de sélectionner les images correspondantes. (Rien dans le nom des images ne donnera d'indices).
Peut-être que j'ajouterai du bruit, ou autre chose sur les images par la suite, mais l'idée est là.
Qu'en pensez vous ?
Hors ligne aircrack # Posté le 08/12/2008 à 18:00:04
Groupe : Membres
Bonjour,

ta solution comporte deux soucis : d'une part une banque d'image n'est pas illimitées, d'autre part une grande banque d'image utilise beaucoup d'espace disque.
L'idée de fond est néanmoins pas mal :) . À améliorer !

Cordialement,
aircrack
Hors ligne franckysolo # Posté le 08/12/2008 à 18:02:35
Avatar
Groupe : Membres
hello,
je suis en pleine apprentissage de la poo donc voici mon captcha en image:
Image utilisateur
et voici le code:
-d'abord la class:
Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
/*
*		Class Captcha	
*				Genreration de captcha
*					@param integer $larg : 
*					@param integer $haut :
*	
*/

class Captcha
	{
	//		attributs		//
	
	//@param int $largeur
	private $larg;
	//@param int $haut
	private $haut;
	
	//@param string $code
	private $code;
	//@param string $caracteres
	private $caracteres = '234569ABCDEFGHJKMNPRST';
	//@param int $char_max,$char_min
	private $char_max = 6;
	private $char_min = 4;
	
	// @params int : pour le bruit
	private $line_max = 6;
	private $line_min = 2;
	private $arc_max = 2;
	private $arc_min = 1;
	private $pixel_max = 400;
	private $pixel_min = 150;
	
	// @param string $font
	private $font = 'Fonts/Alanden_.ttf';
	
	// @params int $ecart,$font_size (px) 
	private $font_size = 16;
	private $marge = 20;
	
	//	@param  $captcha
	private $captcha;
	
	function __construct($larg,$haut)
		{
		$this->larg = $larg;
		$this->haut = $haut;
		$this->captcha = imagecreatetruecolor($this->larg,$this->haut);
		$this->code = '';
		}
		
		
	//		genere un nb aléatoire	
	//		return int
	private function random()
		{
		return srand((double)microtime()*1000000); 
		}
	//		genere une couleur aleatoire
	private function random_color()
		{
		return imagecolorallocate($this->captcha,rand(0,255),rand(0,255),rand(0,255)); 
		}
		
	//		genere une couleur aleatoire plus foncer pour le texte
	private function random_fontcolor()
		{
		return imagecolorallocate($this->captcha,rand(0,100),rand(0,100),rand(0,100)); 
		}
		
	//		creer le cadre	
	private function cadre()
		{
		$blanc = imagecolorallocate($this->captcha,255,255,255);
		imagefilledrectangle($this->captcha,1,1,($this->larg - 2),($this->haut - 2),$blanc);
		imagecolortransparent($this->captcha,$blanc);
		}
	//		genere le code code captcha
	private function genere_code()
		{
		$this->random();
		$nb_char = rand($this->char_min,$this->char_max);
		$nb_char_ok = strlen($this->caracteres) - 1;
		$x = $this->marge;
		//une boucle pour les caracteres
		for( $i = 0; $i < $nb_char; $i++ )
			{
			$y = rand( $this->font_size,($this->haut - 5) );
			$angle = rand(-25,25);
			$n = rand(0,$nb_char_ok);
			$this->code .= $this->caracteres[$n];
			imagettftext($this->captcha,$this->font_size,$angle,$x,$y,$this->random_fontcolor(),$this->font,$this->caracteres[$n]);
			$x += $this->marge;
			}
		$_SESSION['code'] = $this->code;
		}
				
	// 		ajoute du bruit (lignes)
	private function lignes()
		{
		$nb_lines = rand($this->line_max,$this->line_min);
		for( $i = 0; $i < $nb_lines; $i++)
			{
			imageline($this->captcha,rand(0,$this->larg - 1),rand(0,$this->haut - 1),rand(0,$this->larg - 1),rand(0,$this->haut - 1),
			$this->random_color());
			}
		}
		
	// 		ajoute du bruit (cercle)
	private function arcs()
		{
		$nb_arcs = rand($this->arc_min,$this->arc_max);
		for( $i = 0; $i < $nb_arcs; $i++)
			{
			imagearc($this->captcha,rand(0,$this->larg - 1),rand(0,$this->haut - 1),rand(0,$this->haut),rand(0,$this->haut),0,360,
			$this->random_color());
			}
		}
		
	// 		ajoute du bruit (pixel)
	private function pixel()
		{
		$nb_pixel = rand($this->pixel_min,$this->pixel_max);
		for( $i = 0; $i < $nb_pixel; $i++)
			{
			imagesetpixel($this->captcha,rand(1,$this->larg - 2),rand(1,$this->haut - 2),$this->random_color());
			}
		}
	//		affiche le captcha	
	public function display()
		{
		// le captcha
		$this->cadre();
		$this->genere_code();
		//	ajout de bruit
		$this->lignes();
		$this->arcs();
		$this->pixel();
		//	envoi de l'image au navigateur		//
		header("Content-type: image/png");
		imagepng($this->captcha);
		imagedestroy($this->captcha);
		}
		
	//		verifie le code		//
	public function verif_code($post_code)
		{
		$post_code = strtoupper($post_code);
		$post_code = trim(addslashes($post_code));
		if( $post_code == $_SESSION['code'] )
			{
			return true;
			}
		return false;
		}	
	}
?>

et enfin un exemple d'utilisation
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
session_start();
include('class_captcha.php');
$captcha = new Captcha(150,40);
?>
<html>
<body>
<?php
if(isset($_POST['code']))
{
if($captcha->verif_code($_POST['code']))
	echo 'ok';
else
	echo 'code incorrect';
}
?>
<br />
<img id="captcha" src="captcha.php" />
<a href="" onClick="javascript:document.images.captcha.src = captcha.php">
	<img src="Images/actualiser.png"  title="Changer le code" width="35" height="35" align="top" border="0" /></a>

<hr />

<form method="post" action="">
	<input type="text" name="code"  />
	<input type="submit" value="tester" />
</form>
</body>
</html>

Édité le 08/12/2008 à 18:03:21 par franckysolo

Mon site perso:
Image utilisateur
 
Hors ligne rom1504 # Posté le 08/12/2008 à 18:37:28
Groupe : Membres
De ce que j'ai regardé ( j'ai pas lu tous le code ) c'est bien codé :) , avec de la poo c'est bien organisé. En plus le captcha produit a l'air pas mal.
Édité le 08/12/2008 à 18:38:13 par rom1504

Mon portfolio - client_irc : mon client irc - Présentation sur le sdz de ce client irc - vraiCalculatrice : une calculatrice qui permet d'effectuer vos calculs en une seule fois
 
Hors ligne Thulium # Posté le 08/12/2008 à 20:39:43
Avatar
Groupe : Membres
utilise plutôt mt_rand() que rand();

"Keyboard not found, press F1 to resume."
Code : Console
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ echo "C'est bien mon fils, tu es devenu un Geek !"
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 115 Zéros connectés | Requêtes SQL 6 requêtes | Temps de génération de la page : Total (SQL) 0.061s (0.0458s)