SEO, BASH, PHP et plus si affinités

Les captchas les plus simples sont souvent …

…les meilleurs. Après avoir passé du temps sur un « gros template » pour Sick Submitter, il y a vraiment très peu de captchas que je [ou ma famille en Inde] n’arrive pas à passer. Cependant, un captcha a retenu mon attention, mais avant d’aller plus loin, petit tour d’horizon des principaux captchas.


Les differents types de CAPTCHAS

Le CAPTCHA image

Bon celui-ci, pas la peine de le présenter je pense. Tout le monde connait recaptcha ou ses potes.
Il s’agit d’une image plus ou moins lisible avec un ou plusieurs mots (ou chiffres) qu’il vous faut recopier.

Avantages :

  • Il faut investir dans un très très bon OCR pour casser soi-même ces captchas
  • Impossible à passer si vous n’utilisez pas une main d’oeuvre humaine

Inconvénients :

  • Il suffit d’utiliser des plateformes comme decaptcher, deathbycaptcha, bypass captcha et compagnie pour en venir à bout

Le CAPTCHA « homemade » et/ou opensource

Celui la généralement, à moins d’un coup de génie, est assez facilement contournable. Il utilise dans la plupart des cas la librairie GD de PHP ou un équivalent, et dans certain cas, un « ID » permettant d’établir une correspondance avec le Captcha. Avec un peu de temps, si les codes font moins de 6 caractères, vous pouvez très facilement vous contruire votre propre « hashtable » pour ces captchas.

Avantages :

  • Certains scripts étant utilisés sur une grosse quantité de plateformes, si il y a une faille à exploiter c’est banco. (Merde on vient de me souffler que c’est un inconvénient).
  • Tres simple à mettre en place

Inconvénients :

  • Voir la partie avantages
  • Il faut connaitre un minimum la programmation afin de juger de la robustesse du code fourni

Le CAPTCHA mathématique

Et oui, le fameux « Combien font 12 + 4 » ou autre. Pour celui ci, autant dire qu’avec les fonctions regex() et calc() de Sick, c’est vraiment très très basique.

Avantages :

  • Les indiens seront inutiles sur ce coup (attention, dépend des softs et de la plateforme utilisée !!)
  • S’adresse à un public ayant un niveau minimum CP. Donc vous ne serez pas spammés par les skyblogs users 🙂

Inconvénients :

  • Les récents softs SEO intègrent des fonctions assez poussées pour résoudre ce type de protection
  • Même avec un script perso, c’est basique à contourner

La question basique

Pour ne citer personne, un très célèbre Pink Hat (d’un autre coté ils sont 2 ou 3 je crois:P) l’utilise sur son blog. Il s’agit d’un jeu de questions/réponses pré-défini auquel il faut répondre correctement, un captcha quoi.

Avantages :

  • Plus robuste que les précédentes protections
  • Je viens de faire une ancre de ouf malade pour Gwaradenn

Inconvénients :

  • Tout comme les CAPTCHAS homemade, si vous ne possédez pas un jeu conséquent de questions/réponses, il sera facile de se concocter une base de données perso avec les questions et les réponses adéquates
  • Des BDD centralisées avec un grand nombre de ces questions existent, et pour les plateformes dans la langue de Shakespear, il existe la fonction answer() dans Sick Submitter par exemple. (Bon OK, c’est aussi un avantage)
  • Il ne faut pas avoir quitté l’école en CE1, car certaines questions nécessitent tout de même une certaine culture générale. Comme par exemple des notions en géographie

Le CAPTCHA ou seul un employé de la NASA ou un docteur en physique quantique peut répondre

Clairement ici, ne vous adressez pas au grand public.
Le concept va faire tripper 5 mecs sur terre à mettre 10 minutes pour écrire un commentaire et 4 jours à resoudre le CAPTCHA. Si bien que quand le mec va cliquer sur envoyer, la session aura expiré et il devra se retaper une équation qu’il mettra 4 jours à résoudre, pour finalement envoyer un mail avec son commentaire.

Avantages :

  • Adieu le spam
  • Beaucoup trop marginal
  • S’adresse à un public très très très limité
Inconvénients :

  • En plus de ne plus avoir de spam, vous n’aurez plus de commentaires

Protection sans CAPTCHA

Les champs de formulaire cachés

La veille technique de siou, qui consiste à mettre un input caché dans un formulaire qu’il ne faut pas remplir afin de poster le formulaire. Autant dire que tous les softs SEO dignent de ce nom rigolent quand ils voient cette protection, et oui, ça doit faire plus de 10 qu’on ne remplit pas tous les champs des formulaires que l’on trouve comme des bourrins.

Avantages :

  • Aucun
  • Fait marrer les connaisseurs

Inconvénients :

  • Se fait péter par tous les codeurs et softs SEO

Les actions visuelles, par clic

On commence à en voir apparaitre quelques unes, mais elles restent relativement minoritaires. Certaines demandent de déplacer le curseur afin de pouvoir poster, d’autre de cliquer sur l’image correspond à un mot (« Cliquez sur l’image representant un chat »), d’autre de dessiner une forme géométrique avec la souris afin de pouvoir poster …

Avantages :

  • Solutions minoritaires
  • Pour certaines, très facilement by-passable (notamment celles utilisant javascript)
Inconvénients :

  • Pas du tout adapté aux malvoyants
  • Pour certaines, très facilement by-passable. Pardon je l’ai déjà dit.

Alors comment faire ?

Et bien c’est une {mal|}hereuse découverte que j’ai fait en … non ça ne vous regarde pas en fait.
Un CMS très connu propose un module de CAPTCHA intégrant cette solution, mais peu utilisée. Il s’agit en fait du Captcha CSS.
Le concept est relativement simple et puissant. Avec un savant mélange de « float:left » et « float:right », le code apparait correctement à l’écran, mais dans le désordre dans le code source, et ce de façon aléatoire !! Si vous aimez les défis, faites vous plaisir.

Lectures connexes :

29 Réponses to “Les captchas les plus simples sont souvent …”

  1. rivsc dit :

    Intelligent mais avec une machine virtuelle, photo d’écran et un OCR derrière bah on l’a nan ?

  2. Ma foi je n’ai pas de captchas pour mes commentaire et jusqu’a maintenant je dois bien avouer que akismet suffit largement a me protéger du spam – Juste je vais de moins en moins regarder ce qui se trouve dans les spam et je supprime probablement de plus en plus de faux positifs… mais bon …. z’avez qu’a faire comme moi, quand vous savez que vous etes dans les spams faite peter un tweet a l’auteur du blog …

  3. Jeremy dit :

    J’ai pas le matos pour jouer à ça mais ouep je dirais comme @rivsc

    Mais j’aime pas qd tu te moque des input cachés … Moi je ne les cache pas, mais je mets un « Attention humain, ne pas remplir » … Ben les ptis soft SEO se font encore avoir 🙂

    Sinon un truc que j’ai bien faire c’est vérifier que le POST soit bien fait en XHR ^^ le temps qu’un trou duc trouve la supercherie, il est passé à autre chose 🙂

    Cool sinon comme captcha, techniquement, il fallait y penser

  4. Martin dit :

    Personnellement, je passe par Selenium. En conséquence, je capture la zone d’écran où apparaît l’image telle qu’affichée par le navigateur avant de la renvoyer à l’API de résolution de CAPTCHA. Les JavaScript, images, float et autres astuces CSS, je m’en moque comme de l’an 40. Ceci dit, non, je ne spamme pas (jamais). 😉

  5. AxeNet dit :

    J’ai appris qu’au nouvel an, Le Juge envoi toujours un SMS à sa famille pour prévenir que la carte de bonne année est passée dans les spams de La Poste.

  6. Graphiste dit :

    Conclusion : tous les captchas sont craquables, avec soft ou avec l’aide de la famille 😉

  7. Hervé dit :

    Pour ma part j’ai opté pour des jeux de questions mathématiques (plusieurs différentes). Si ce n’est pas révolutionnaire, ça évite quand même pas mal le spam car j’en ai quasiment pas.

    En tout cas, intéressant de savoir que cela fait partie des captchas faciles à péter.

    @Le Juge : tu noteras que tu ne passes jamais en spam chez moi 😉

  8. Phil dit :

    Pourquoi éviter le spam puisqu’il y a Askimet ?

  9. Aurélien dit :

    Bel article et joli design.
    Le Juge, le problème d’akismet, c’est qu’il va filtré de nombreuses personnes et que l’on peut encore se faire spammer.

  10. RDD dit :

    @risvc
    C’est fort probable, mais un peu « lourd » à résoudre par rapport aux autres exemples cités dans l’article.

    @lejuge
    Pour akismet, cote blogueur, OK, bien que je ne sois pas complètement fan.
    Et pour moi il ne fait pas parti des Captchas à proprement parler, puisque c’est un filtre post-soumission. Je lui préférerai une solution pure-blacklist, a savoir tout ce qui n’est pas dans la langue que j’ai défini, fait plus de x mots et contient moins de 3 liens => BOUM. Et je ne veux plus en entendre parler.
    Apres, Akismet est bien pour une chose, mais ça nous le verrons plus tard 😉

    @Jeremy
    Je ne me moque pas des input caches, mais aujourd’hui, a moins de bourriner en curl pour remplir tous les champs d’un formulaire, c’est assez facilement by-passable.
    Pour les posts en XHR, c’est une tres bonne idee 😉 Mais meme remarque que precedemment. Les « vrais » softs SEO utilisent souvent un browser, soit IE, soit leur propre browser pour poster. Donc le XHR sera inutile dans ces cas la.

    @Martin
    J’ai vu sur twitter que tu étais un grand fan de selenium 🙂 Le souci ici, c’est que la zone (je parle x-y) ne se situe pas toujours au meme endroit, et que le container, ne possede pas d’attributs permettant de l’identifier (pas de class, id ou autre).

    @axenet
    Quand le sms ne passe pas dans les spams 😉

    @Graphiste
    Bonne conclusion 🙂

    @Hervé
    En fait, ils font parti de ceux faciles a péter, mais étant donne qu’ils sont un peu moins utilisés que les solutions recaptcha et compagnie, la plupart des spammeurs ne se font pas chier a résoudre ce type de captchas, mais moi si 😛

    @Phil
    Cf ma réponse au juge, akismet ne fait pas tout et n’agit pas pré-submission.

    @Aurélien
    Merci, et oui akismet n’est pas un magicien.

  11. Leimi dit :

    Hello,

    Je ne comprend pas vraiment l’avantage du captcha CSS par rapport au captcha images, à part peut-être une accessibilité accrue pour l’internaute. Dans un cas comme dans l’autre, passer par une plateforme genre decaptcher marche parfaitement non ?

  12. Martin dit :

    @RDD : Je n’ai pas rencontré de cas où je n’ai pas pu identifier un XPath générique me permettant d’accéder à la zone que je veux.

    XPath n’est pas évident à maîtriser au début, mais il permet de dire « trouve le SPAN qui se trouve à la troisième colonne de la deuxième ligne du second tableau après le troisième titre qui suit le premier HR de la page. »

    Ceci dit, je ne spamme pas, me contentant d’utiliser Selenium pour publier automatiquement sur des sites depuis une interface centralisée où je rédige semi-automatiquement ou manuellement, le tout sans passer par une API (soit pour plus de discrétion, soit parce qu’aucune API n’est disponible ou active).

  13. RDD dit :

    @martin
    Oui, pour Xpath pas de souci, ça fait longtemps qu’il fait parti de mes tools 😉 Mais dans ce cas précis, l’astuce de ce Captcha, c’est qu’il se place aléatoirement dans le formulaire, donc même avec XPath, c’est cuit cuit (l’exemple que je fourni est juste illustratif, le CMS qui l’utilise le place soit après l’input prénom, soit après l’input email, soit dans carrement dans un autre fieldset …).

    @Leimi
    Salut,
    Pour les plateformes comme decaptcher, tu es obligé de sauver l’image et de jouer avec leur API. Hors le captcha CSS, n’est pas une image et comme l’a fait remarquer justement Martin, il aurait été facile via Xpath ou une capture screen d’y remédier. Seulement, la subtilité est telle qu’il ne se situe jamais au même endroit, donc Xpath ou coordonnées x/y sont inexploitables.

  14. Pierz dit :

    La question personnalisée (voir SMF) et la modification du formulaire de soumission(input hidden) sont selon moi les techniques les plus efficaces contre le spam automatique.

    Cependant ça ne protège pas des cons qui viennent spammer manuellement votre blog juste pour gratter un lien ( les coms du style « excellent article » de « keyword » qui n apporte rien a l article ). La solution ? Virer le champ « website ». ( oui complètement a l opposé de dofollow ou comment love 🙂

  15. A partir de combien de ‘spams’ doit on véritablement se munir d’un captcha ??

  16. CM dit :

    Perso, je n’utilise pas de captcha, je trouve ça très chiant, perte de temps inutile, laid et inutile vu que c’est très souvent contournable… Je filtre simplement les inputs d’une manière maison… En gros, tu postes ce que tu veux, si les réponses sont pertinentes ca passe sinon ca va à la poubelle et je n’emmerde personne avec des capchtcas…
    PS : Une solution assez efficace qui à mon avis est très difficilement crackable est l’image blanche sur fond blancet un champ blanc. Il n’y a rien à voir, rien à poster, rien à faire, si tu cherches à poster à voir, à cliquer etc … tu es rejeté.

  17. Il en reste des programmateurs qui utilisent le champ caché et il a l’air de bien fonctionner pour eux. Comme vous le dites, parfois le captcha le plus simple (ou le plus ridiculisé) s’avère le plus…fiable. Ce Captcha CSS, avez-vous un lien qui montre la démarche d’installation ? Merci pour vos conseils.

    – Marie –

  18. Bon pour la plupart des captchas on va dire que ça élimine déjà les amateurs, je ne connaissais pas la technique de captcha en CSS, c’est plutôt une bonne idée. Pour un truc vraiment sûr il faut faire sa petite recette maison, trouver le truc original.

  19. Il y certain site, plus précisément des blogs wordpress qui utilisent le captcha mathématique, mais même en entrant le résultat manuellement, il renvoie toujours une valeur fausse! Un bug des fonctions regex()/calc() ou bien un bug du blog elle-même?

  20. David dit :

    Cela me rappelle une page que j’avais faite sur le CAPTCHA que seul un ingé peut comprendre.
    http://www.tayo.fr/top-10-codes-de-securite-moisi-news.php

  21. agencement dit :

    le captcha css pourquoi pas mais je vois pas mal de méthodes pour le contourner, ca va pas durer longtemps ou alors j’ai rien compris !

    je dirai qu’une question complexe donne de bons résultats et evite certain type de spam …

    ya spam et spam, et le fait d’arriver à faire partir qq’un qui est juste de passage pour avoir un LRD …

    rien ne vaut un bon filtrage manuel et fermeture des comment …

    Sebastien

  22. graffeur lyon dit :

    Il existe aussi des solutions type « mail in black » qui ont l’air assez efficaces, par contre, c’est payant et lke mail de confirmation arrive souvent sur la boite spam… Curieux pour un outil anti-spam !

  23. Perso je suis plutot de l’avis de @CM, visuellement le captcha c’est pas terrible terrible.

    Pour éviter le spam-co by robots, je préfére une restriction du temps passé sur la page.
    On calcul la différence entre le moment d’arrivée sur la page et le moment ou est posté le comment et voili voilou …

  24. php dit :

    Très bon article mais je me demande pour éviter un spam qu’est ce qui serait le plus approprié, faire faire à la personne un calcul ou bien lui faire recopier un captcha ?

  25. Funkynews dit :

    Le recaptcha est une bonne alternative car il autorise les erreurs, et gère aussi l’audio. De surcroît, le taux de disponibilité reste excellent.

  26. Pierre dit :

    Très bon article, mais je vois que finalement vous n’avez opté pour aucune de ces méthodes. Au fait d’où vient le terme captcha ?

  27. achat appart dit :

    La photo avec breaking captcha m’a fait marrer.
    les captchas je ne les aime pas. Ils te retardent grave
    mais du point de vue d’un propriétaire d’un blog ils sont utiles.

  28. VPN dit :

    les captchas c’est efficace pour freiner les spammeurs, quand c’est trop difficile, ça peut poser des problèmes aux internautes

  29. ynizon dit :

    Bonjour,
    juste pour vous signaler qu’en 1 heure, j’ai cassé le captcha css. Je suis pas expert dans ce genre de trucs, donc ca m’étonnerait que les gars de Xrummer ne puisse pas non plus le gérer.

    Voila le code si ca vous interesse:
    http://www.gameandme.fr/creation-web/casser-captcha-css/

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Je suis un gros footer de merde !! - Powered by le Presse mot