Captcha - Quelques interrogations

Démarré par Vivig, 19 Août 2007 à 21:42

0 Membres et 1 Invité sur ce sujet

19 Août 2007 à 21:42 Dernière édition: 20 Août 2007 à 02:11 par Vivig
Bonsoir à tous :)

Comme certains le savent, je suis actuellement webmaster d'un site Zelda de la communauté francophone, et j'expose mon problème :
Tout comme Zelda-Solarus il y a quelques mois, les commentaires invités de mon site se voient spammés massivement par des bots et cela devient quotidien. J'aimerais donc trouver une solution à ce problème, cependant, j'aimerais avoir l'avis de quelques personnes expérimentés :

Je me suis renseigné un peu partout afin de comprendre le fonctionnement des Captcha, en fait il s'agit donc d'une méthode de sécurité que l'homme peut déceler et non le bot. L'exemple typique est bien sûr celui des images-textes (telles que dans les commentaires de Zelda-Solarus) générées aléatoirement.
Toutefois, je me suis aperçu dans ma recherche que d'autres programmeurs proposaient des variantes, telles que poser une question banale ("Indiquez combien font 1+1"), ou inscrire le nombre X dans la case suivante.

Je veux m'intéresser particulièrement à cette dernière technique : celui qui l'a proposé disait que le principe serait de demander aux rédacteurs de commentaires d'inscrire "604" dans le champ du formulaire (une condition se chargeait alors de vérifier si le nombre avait été inscrit ou non).
Toutefois, celui-ci a été critiqué par d'autres programmeurs, ceux-là disaient que ce n'était pas super sécurisé comme système dans la mesure où l'administrateur du bot pouvait facilement demander de remplir un champ supplémentaire avec la valeur demandée.

Je me suis alors posé une question banale : Si j'utilisais une fonction php "rand()" pour générer automatiquement un nombre au chargement de la page, et que je faisais en sorte que ce soit ce nombre-ci qui soit demandé à être inscrit dans le champ, ça devrait régler le problème non ? Dans la mesure où l'administrateur du bot ne peut pas deviner à l'avance le nombre qui sera demandé, à moins de faire X tentatives pour un seul commentaire, non ?

Pourtant, cela m'a étonné : la logique voudrait que le système règle ce problème, mais pourtant, "pourquoi existe--il des captchas plus complexes que celui-là si celui-ci, tout banal, semble sécurisé ?".

En bref, si quelqu'un pourrait m'éclairer peut-être que cela m'aidera :). Merci ;).

Edit : Arrrrg. J'étais persuadé avoir posté dans "Informatique"... Veuillez m'excuser, c'est une erreur involontaire de ma part, j'en suis confus... Si un modérateur pouvait passer derrière moi, pour déplacer le topic, merci, et encore désolé  :unsure:

Edit 2 : Merci Couet  ^_^.
ZeldaForce.net
WoS, de retour, prochainement

7 Avril 2003 / 7 avril 2015  : Dodécasolarussien !

Pourquoi le tient te parrait sécurisé ?

Facteur humain, il ne l'est pas.

Si tu ne fais que poser une question, du genre "recopier ce nombre", le bot analysera ta question, reconnaîtra probablement les mots "recopier" et pourquoi pas "nombre", et en déduira, puisqu'hypothétiquement doté d'une petite intelligence artificielle, qu'il faut recopier le nombre écrit "en brut".

Un degré de sécurité en plus c'est l'image via la librairie GD de php, mais de nos jours les puissances de calcul sont telles qu'un programme informatique (en l'occurence, un bot) est tout à fait capable de lire une image presque comme pourrait le faire l'oeil humain.

Encore une fois, le facteur humain rentre en compte, parce qu'un image même complexe d'un symbole familier peut facilement être reconnue par l'homme, du moins assez rapidement, alors qu'il faudra une analyse de l'image pour le programme.

Mais ce facteur humain peut être émulé, puisqu'un fois la forme reconnue et assimilée à celle désirée, elle peut être stockée dans une banque de données en vue d'une utilisation ultérieure.

Bref, on tourne en rond.

Donc ta version n'est pas sécurisée, mais c'est déjà un début. Sachant que -sans vouloir te froisser- ZeldaForce n'a pas les mêmes prétentions qu'un clubic ou nofrag, cette méthode parrait relativement sûre, jusqu'à ce que ..

Pour ma part, j'utilise quelque chose de tout simple et, ce me semble, assez sécurisé, toutes proportions gardées:

Je prends le timestamp (en secondes ou microsecondes, revoyé par les fonctions time() et microtime() ), je fais un rand entre 0 et 9, et je passe le timestamp au hachoir (md5) avec un nombre d'itérations égal au nombre aléatoire, et je prends les 5 derniers caractères du résultat, un p'tit coup de baguette magique et l'image, via GD est créée.

Pour ce qui est du stockage du nombre, ne surtout pas le faire apparaître via post ou get, utiliser plutôt session qui reste côté serveur, qu'il suffira de détruire une fois le formulaire envoyé.

Bref, c'est un casse-tête comme un autre, mais il me semble plutôt efficace pour l'ampleur de mes réalisations (donc basse). Après, tu peux t'amuser (encore avec GD) à mettre des déformations, choisir un fond d'image aléatoire (genre ajout de bruit, etc.), enfin chacun sa méthode, je ne te donne qu'une pratique parmis tant d'autre, ce n'est certainement pas la plus fiable ou la plus optimisée, mais elle me suffit pour ce que je fais.

Ok, merci de ta réponse complète.

Désormais je cerne un peu plus le problème, car en réponse au :
CitationPourquoi le tient te parrait sécurisé ?
Je n'avais alors pas tenu compte d'une éventuelle émulation du facteur humain (j'en étais resté au stade où un bot n'agit et ne réfléchit pas de la même manière qu'un humain).

Je vais donc étudier ta solution alternative, afin de voir si je peux mettre en place quelque chose du style (le captcha que j'ai disposé temporairement -non celui dont j'ai parlé plus haut, mais un autre "classique"- ne fonctionnant pas à 100%). Ça me permettra également de comprendre un peu la logique du principe.

Bref, merci, je reposterais si besoin est.
ZeldaForce.net
WoS, de retour, prochainement

7 Avril 2003 / 7 avril 2015  : Dodécasolarussien !

Si tu as besoin d'aide Vivig, je suis là :P
Je l'ai deja fait :P

Par contre , il faudrait se renseigner si chez llr.be ils ont activé la librairire GD. Normalement oui, mais il vaut mieux être sur :)