Page 1 sur 2
créer une "empreinte" unique d'un visiteur
Posté : 09 oct. 2011, 23:27
par moogli
Salut,
j’essaie de créer une système me permettant d'éviter une utilisation abusive d'un formulaire de contact, ben oui un truc anti spam ^^
Je ne veux pas d'un "captcha" avec des images. j'ai déjà un truc du genre avec une demande de calcul.
c'est loin d'être parfait et je sais qu'un eval peux résoudre le problème ^^
ce que je souhaite c'est un truc sur lequel le visiteur n'a pas de prise. Je pense donc a une table dans une base sqlite, qui log l'ip (du mieux que l'on puisse avoir) mais vu la fiabilité de la chose je cherche a créer une "empreinte" unique du visiteur.
j'ai pensé a un md5($ip.$_SERVER["HTTP_USER_AGENT"]); ceci dit le HTTP_USER_AGENT étant aussi fiable qu'un tonneau percé je cherche des idées pouvant me fournir un truc a peu près stable sur lequel je pourrais me baser pour "black lister" un "client" un certain temps pour éviter d'utiliser le formulaire de contact pour pourrir ma boite mail
voila si vous avez des idées j'suis prenneur
Merci
@+
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 07:41
par xTG
Je pense que pour avoir un système fiable faut récupérer tout ce que tu peux sur le client et jouer avec les probas pour gérer le tout.
Certaines informations sont plus ou moins sûres que d'autres.
Il n'existe pas à ma connaissance une seule valeur qui ne puisse être détournée, donc faut tout prendre en compte en sachant se remettre en compte.

Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 09:34
par moogli
Me remettre c'est pas un soucis, le seul que j'ai d'éviter le pourrissage de boite mail par ce formulaire :/ (le truc c'est que vire complémentement un site et laisse le formulaire a la place en indéx donc y a un peu de risque

)
Je vais essayer de "blinder" mon "captcha" et demander a ce que l'on pris pour moi
Si d'autre idée je suis open
Merci
@+
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 10:21
par popy
Ben, un cookie de session, c'est pseudo-fiable, vu que c'est toi qui le crée. Donc une fois que tu sais qu'un utilisateur est humain, ça va.
Sinon plutot que faire un captcha, fait des questionnaires, du style "lequel de ces animaux n'est pas un oiseau : poule, vache, autruche". Il t'en faut une 20aine en BDD, et essayer d'afficher les réponses dans un ordre un peu random pour éviter qu'un robot puisse indexer les questions/reponses et les essayer une par une
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 12:39
par Cyrano
Un truc vraiment basique que j'ai déjà exposé ici et qui marche toujours très bien, j'ai mis ça en place sur un livre d'or il y a 3 ou 4 ans, je sais plus trop, ça a stoppé net les spams.
Ton formulaire comporte probablement un textarea avec un id="message". Crées-en un second avec id="spam". Ensuite deux modifications :
-1- dans la feuille de style, masque le textarea qu a pour id « message » (et pas « spam »)
-2- Lors du traitement, vérifie le contenu de « message » : comme un internaute humain ne peut pas le voir, c'est forcément un robot qui l'a rempli puisqu'il ne tient pas compte des feuilles de style, donc tu lui fait une redirection vers le néant ou n'importe quel trou noir à disposition. Quand à l'internaute normal, il ne voit pas l'identifiant de la zone et il s'en cogne, donc il remplit normalement son texte.
Comme certains robots « savent » plus ou moins détecter certains mots, il y a des chances pour qu'ils ne mettent rien dans le textarea « spam », donc si cette zone est en plus vide, au traitement tu auras la confirmation si c'était nécessaire que c'est bien un robot qui passe.
Avec ça, pas de captcha, pas de calculs à fournir, rien pour enquiquiner l'utilisateur normal, pas de casse-tête

Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 13:20
par moogli
Wé ça m'intéresse le coup du champ caché merci.
Popy le "captcha" c'est deux rand(1,50); et un array _rand sur un tableau qui contient l'operation.
Après c'est vrai que ce type limite par l'intellect mais bon y a la calculatrice au pire
J'avoue que pour le coup l'ergonie utilisateur je m'en fou un peu je suis meme pas sur que le formulaire sera utilisé un jour

J'veux juste pas etre emmerdé
Merci pour les infos
@+
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 14:53
par xTG
Ouhouh ! Pas bête du tout le coup des textareas ! Je me note ça, c'est franchement pas bête...
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 15:26
par Cyrano
Ouhouh ! Pas bête du tout le coup des textareas ! Je me note ça, c'est franchement pas bête...
J'adore les compliments, ça fait un bien fou... rhaaaaaa vas-y, redis-le encore ?
En fait j'avais eu cette idée là précisément parce que j'en avais marre de me faire pourrir un petit livre d'or par ce qui était de toute évidence des robots. Je me suis donc basé sur ce point particulier : un robot peut faire certaines choses s'il est bien programmé, mais il est limité par le niveau de génie de son créateur et par la complexité qu'il peut y avoir à programmer certains éléments. Donc, en contournant via une feuille de style, on lui met des bâtons dans les roues, et même aujourd'hui, ça reste valable. Et je suis tenté de croire que ça devrait durer encore pas mal de temps avant que les robots soient assez futés pour trouver une parade parce qu'il faudrait qu'il interprètent à la manière d'un humain qui voit avec ses yeux et non qui lit du code client.
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 15:51
par nicolas
Ouhouh ! Pas bête du tout le coup des textareas ! Je me note ça, c'est franchement pas bête...
J'adore les compliments, ça fait un bien fou... rhaaaaaa vas-y, redis-le encore ?
En fait j'avais eu cette idée là précisément parce que j'en avais marre de me faire pourrir un petit livre d'or par ce qui était de toute évidence des robots. Je me suis donc basé sur ce point particulier : un robot peut faire certaines choses s'il est bien programmé, mais il est limité par le niveau de génie de son créateur et par la complexité qu'il peut y avoir à programmer certains éléments. Donc, en contournant via une feuille de style, on lui met des bâtons dans les roues, et même aujourd'hui, ça reste valable. Et je suis tenté de croire que ça devrait durer encore pas mal de temps avant que les robots soient assez futés pour trouver une parade parce qu'il faudrait qu'il interprètent à la manière d'un humain qui voit avec ses yeux et non qui lit du code client.
Il faut juste que quelqu'un ait l'envie de passer à travers ton filtre. Si c'est juste pour protéger le livre d'or de Mme Michu il y a peu de chance que le jeu en vaille la chandelle mais sur un plus gros site, récupérer la feuille de style, en plus du contenu html et chercher les éléments cachés n'est pas si complexe que cela.
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 17:32
par Cyrano
Il faut juste que quelqu'un ait l'envie de passer à travers ton filtre.
Ben justement, il me semble que c'est ça la magie du truc: de prime abord, le formulaire est normal et à la rigueur un robot verra un champ avec un mot clé qu'on évite quand on veut pourrir un site, et on remplit soigneusement un faux champ que l'utilisateur normal ne voit pas.
Au moment de traiter le formulaire, tu vas repérer tout de suite une embrouille : rien ne t'empêche de traiter l'adresse IP du boulet pour bloquer ses tentatives ultérieures pendant une période donnée, ou tout autre traitement que tu aurais de toutes façons réservé au boulet avec des techniques plus sophistiquées de détection ou d'anti-intrusion. Mieux, en fait, comme il a moins de raisons de se méfier, il va d'autant plus facilement se faire prendre. Les Robots ne sont pas encore capable en général de faire de l'OCR pour lire les captchas, donc il y a des chances s'il y en a un qu'ils passent directement à une autre victime sans se faire repérer, tandis que là, ils ont beaucoup plus de chances de tomber dans le panneau et de se faire détecter.
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 18:40
par xTG
En fait je pense que ce que nicolas voulait dire c'est que le jour où un créateur de bot a envie de pourrir ton site, il va l'étudier et découvrir ceci.
Et donc il créera une règle pour son bot afin qu'il fonctionne sur ton site.
Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 19:33
par Cyrano
Mouais, faudrait qu'il veuille vraiment me pourrir la vie, sans doute un développeur très très tatillon qui trouverait un de mes plus vieux code quand j'apprenais à programmer et qu'il serait chargé de mettre à jour : là effectivement on pourrait comprendre qu'il souhaite me pendre avec mes propres intestins à la première antenne de HotSpot WiFi à portée de main.... (
voir ma signature ci-dessous) Et ça voudrait dire qu'il faudrait qu'il indique vraiment à son bot comment faire de façon générique pour reconnaitre une classe CSS, aller lire la bonne feuille de style, trouver la classe, détecter les instruction qui masquent l'élément et...comprendre pourquoi, surtout si mon champ a un nom normal. Et à la limite, si je met un nom normal à l'autre aussi au lieu de « spam », il aura une raison de moins de comprendre le pourquoi (le bot s'entend) d'autant qu'il n'est pas rare d'avoir pour des raisons fonctionnelles des champs qui sont dynamiquement masqués et qu'on peut devoir faire apparaître avec un gestionnaire d'évènement x ou y.
Pour ma part, je trouve que c'est quand même chercher la petite bête pour pas grand chose : avec cette technique, je trouve que je me simplifie considérablement la vie : pas de captcha, pas de cookie, pas de clé tordue quoique c'est pas exclu non plus voire même recommandable quand même, enfin bon, pas de casse tête particulier pour moi, et la simplicité même pour l'utilisateur normal du formulaire, il a même pas besoin de savoir compter pour répondre combien font 3 + 4...

Re: créer une "empreinte" unique d'un visiteur
Posté : 10 oct. 2011, 21:05
par xTG
il a même pas besoin de savoir compter pour répondre combien font 3 + 4...
Surtout que même à un humain ça arrive de pas savoir répondre...
Ou plutôt de donner la réponse qui correspondait à la question posée il y a 5 minutes (gros formulaire) et qui n'est plus d'actualité... (bon faut vraiment mal coder pour tomber là dessus, mais ça m'est déjà arrivé...)
Re: créer une "empreinte" unique d'un visiteur
Posté : 11 oct. 2011, 13:54
par sirakawa
Moi je trouve les captcha chiants au possible, d'autant que s'ils dépassent la simple opération,ils présentent une suite de lettres plus ou moins aisément déchiffrables: il m'est arrivé plus d'un fois, sur des sites où la génération du captcha est précédée d'une temporisation de devoir poireauter un temps non négligeable jusqu'à tomber sur un qui se laissât lire.
C'est vrai que les deux zones de texte, ça ne requiert aucune installation, juste une modification minime du code des pages... Tout pour plaire.
Par ailleurs le bruit a couru que ce type de captcha seraient utilisés commercialement sur des portions de textes réistant aux OCR, mais je suppose qu'il ne s'agit là que d'un bouteillon...
Re: créer une "empreinte" unique d'un visiteur
Posté : 12 oct. 2011, 09:26
par dunbar
Un truc vraiment basique que j'ai déjà exposé ici et qui marche toujours très bien, j'ai mis ça en place sur un livre d'or il y a 3 ou 4 ans, je sais plus trop, ça a stoppé net les spams.
Ton formulaire comporte probablement un textarea avec un id="message". Crées-en un second avec id="spam". Ensuite deux modifications :
-1- dans la feuille de style, masque le textarea qu a pour id « message » (et pas « spam »)
-2- Lors du traitement, vérifie le contenu de « message » : comme un internaute humain ne peut pas le voir, c'est forcément un robot qui l'a rempli puisqu'il ne tient pas compte des feuilles de style, donc tu lui fait une redirection vers le néant ou n'importe quel trou noir à disposition. Quand à l'internaute normal, il ne voit pas l'identifiant de la zone et il s'en cogne, donc il remplit normalement son texte.
Comme certains robots « savent » plus ou moins détecter certains mots, il y a des chances pour qu'ils ne mettent rien dans le textarea « spam », donc si cette zone est en plus vide, au traitement tu auras la confirmation si c'était nécessaire que c'est bien un robot qui passe.
Avec ça, pas de captcha, pas de calculs à fournir, rien pour enquiquiner l'utilisateur normal, pas de casse-tête

Une discution qui avait commencer en 2006 