8768 sujets

Développement web côté serveur, CMS

Pages :
Bonjour tout le monde,

Je vis en ce moment une réelle amourette avec le spam qui me rend très (trop ) souvent visite.

SI j'ai bien compris le système du captcha, quel qu'il soit d'ailleurs accessible ou pas, texte ou audio, je me pose une question toute bête.

Pourquoi on s'embete a faire marcher la librairie GD de PHP pour générer des caractères aléatoires avec un fond tramé etc......puis valider que cette variable aléatoire correspond bien à l'entrée de l'internaute.... ?

En fait pourquoi on écrit pas dans une image gif ou png, une suite de chiffre et de lettres et qu'on demande de renseigner dans le champ prévu a cet effet. Le robot est-il capable de lire une image ? Le robot teste-il le champ jusqu'A temps qu'il trouve ? qu'est ce qu'il fait ce robot ?

Comme ca me surprendrait bcp que tout a coup, tout le monde s'exclame : " mais c'est vrai au fait , il a raison !!!!" , pourriez vous me préciser cette raison et ainsi diminuer mon innocence ?

MErci Smiley biggrin
Modifié par RoseGrenouille (18 Dec 2006 - 20:07)
Modérateur
RoseGrenouille a écrit :
Le robot est-il capable de lire une image ?


Oui, il existe des logiciels en mesure de lire une image, et d'en extraire le texte, exactement comme sur WhatTheFont qui permet d'analyser une image et te dire quelle typo est utilisée. On peut notamment penser aux logiciels des scanners qui permettent de convertir l'image en texte, avec plus ou moins de précision.

Certains robots peuvent également être assistés par des êtres humains pour définir l'action à prendre sur tel ou tel site. D'autres soumettent leurs spams via n'importe quel formulaire trouvé : livre d'or, forum, formulaire de contact, soumission en ligne.

Pour ma part, je regarde le type de spam que je reçois et que mes clients reçoivent. La plupart du temps, les spams contiennent beaucoup de liens... trop de liens pour l'usage normal du formulaire. Mon script compte le nombre de liens et s'il dépasse un certain nombre, j'empêche l'envoi et j'affiche un message au "visiteur". Ce n'est pas infaillible, mais jusqu'à présent, on s'en tire bien sans captcha.
Modifié par Tony Monast (12 Dec 2006 - 02:50)
Bon mon innocence vient de s'effondrer !

Je vais donc inclure des scripts pour gérer ca ......

Je suis preneur de toute autre info dans le même sujet ....

Merci !
J'utilise cette technique pour les formulaires type forum/livre d'or et où on peut envoyer du texte en général :

if (substr_count($texte, "http://")>=3) die("Dehors le spam !");
Le plus simple pour éviter les bots c'est ça :

<?php
if(!empty($_POST))
{
if(!empty($_POST['verif')&&$_POST['verif']=='12')
{
// on traite le formulaire
}
else
{
// Répondez à la question svp
}
}
else
{
echo '<form method="post" action="#">
// les champs du formualire + celui-ci :
Question : combien font 3 multiplié par 4 ?
<input type="text" name="verif" />

<input type="submit" value="Envoyer les données" />
</form>';
}
?>


Voilà, c'est simple !
Modifié par Bison (12 Dec 2006 - 08:41)
Merci pour vos réponses mais j'y suis finalement allé avec un petit kit tout prêt qui me génère un captcha qui est http://www.cryptographp.com, qui m'a vraiment séduit et que je recommande.

En effet d'abord c'est simple à installer, à comprendre, c'est en français pour les récalcitrants à la langue de sheakspeare et puis c'est très efficace....

L'autre avantage je trouve, c'est que le code de cryptographp est très bien écrit, et que l'on peut vraiment jouer avec pour mieux comprendre comment cela fonctionne....

J'aimerais maintenant rajouter un captcha de son pour l'accessibilité .....idéalement qui joue un MP3 que je ferais lire avec le dewplayer.

Quelques idées ou pistes à suivre ?

Merci!
Des avantages ?
Je me demande bien lesquels par rapport à un bête champ de formulaire codé en 3 lignes ? Smiley langue
Modérateur
Bison a écrit :
Des avantages ?
Je me demande bien lesquels par rapport à un bête champ de formulaire codé en 3 lignes ? Smiley langue


L'un des avantages, comparativement à ta solution, est que cryptographp génère une numéro aléatoire. Ta solution Bison, c'est que si un être humain assiste le robot dans sa tâche, il peut très bien prendre en mémoire le résultat de ta question et toujours soumettre cette valeur dans le champ.

À la limite, il faudrait que ta solution génère une question mathématique aléatoire, et encore! Au niveau accessibilité, je me demande s'il n'est pas plus facile de réécrire 4 lettres qu'on voit et qu'on peut entendre, plutôt que de faire un calcul mathématique. Certaines personnes ont vraiment du mal avec le calcul mental, même avec des formules simples.

Cependant, je crois que même si la formule mathématique reste la même, ca va déjà arrêter beaucoup de robots et dans le pire des cas, si le spam revient, on change la formule et le résultat.

Après tout, il n'y a pas vraiment de solutions miracles. On ne peut qu'utiliser la technique la moins pire...
Modifié par Tony Monast (14 Dec 2006 - 15:41)
@ bison ; effectivement je partages ton idée de ce dire que moins il y a de code mieux c'est mais faut-il encore que cela soit imparable ....
Les attaques de spammeurs à la lecture de nombreux articles, sont de deux types principaux en ce moment , les attaques de masse ou par répétition.

l'exemple que donne Tony est celui la , il est en effet très facile de faire un script qui génère le nombre 12 à chaque fois et te rajoute une mention BCC dans ton champ " expediteur" . J'ai vu que l'on appellait ca une attaque par injection d'entêtes.

aussi il faut pas tomber dans la parano ni dans le site bunker, mais un code de 3 lignes, je pense que tout bon spammeur qui veut vraiment utiliser ton formulaire le casse en 4 lignes.


Smiley bawling
RoseGrenouille, tu mélanges tout et tu racontes un peu n'importe quoi.
Tu devrais relire ce qu'est l'injection d'entête parce tu as peut-être bien survolé le sujet, mais t'as pas du tout comprendre.

Allez, pour te faire plaisir je vais t'en donner une de solu pour ton champ expéditeur :
- une regex correctement ficelée et au revoir l'injection d'entête.

Quand à mon bête système de champ calculé, ça fait plus d'un an que je l'utilise sur mes sites et ceux de mes clients... et adieu les bots.

Maintenant, c'est parfaitement ton droit d'utiliser GD et de la ressource pour générer tes captcha, moi je préfères mes 3 lignes bien plus simple à mettre en place.

Pour finir sur ton idée du bot qui va taper 12 tout le temps, tu dis cela parce que tu ne sais pas vraiment comment fonctionne un bot.
Modérateur
Bison a écrit :

Pour finir sur ton idée du bot qui va taper 12 tout le temps, tu dis cela parce que tu ne sais pas vraiment comment fonctionne un bot.


En fait, le problème avec ta solution Bison, c'est qu'imaginons que je sois un emmerdeur de première, prêt à tout pour spammer ton site. Je me fais une application Windows qui est programmée pour soumettre un formulaire à ta page de traitement. Je met les champs appropriés qui sont alimentés automatique avec un beau message publicitaire et finalement, un champ pour ton équation mathématique avec comme valeur 12. Je déplois mon application un peu partout dans le monde, et je démarre tout ca avec un rire diabolique.

Après plusieurs centaines de spams, tu décide finalement de changer l'équation mathématique. De mon côté, après un certain temps, je remarque le changement (de façon automatisée ou non), et je met à jour mon application Windows. De nouveau, je peux soumettre jusqu'à ce que mort s'en suivre. Smiley ravi

D'où l'intérêt d'avoir un système de protection aléatoire, que ce soit des équations mathématiques, une image avec son ou peu importe.

Sauf qu'en règle générale, des emmerdeurs de ce type sont plutôt rares, alors c'est au choix du Webmaster de décider du niveau de protection de son site.

Bison a écrit :

Quand à mon bête système de champ calculé, ça fait plus d'un an que je l'utilise sur mes sites et ceux de mes clients... et adieu les bots.


En effet, j'ai même fait moins que ca comme protection et adieu les bots. Je pense que ca reste du cas par cas.
Modifié par Tony Monast (14 Dec 2006 - 23:17)
>> et je démarre tout ca avec un rire diabolique.
oui mon petit, mais cela ne durera que le temps de réaliser que tu me spammes, soit quelques heures.

La solu du champ calculé offre l'avantage énorme de ne rien consommer comme ressource tout en étant aussi efficace que les captcha image.
Sans compter que certains poussent le vice d'y mettre des fonds qui rendent le visuel indéchiffrable, des polices encore moins lisibles qui ne permettent parfois même pas de faire la diff entre minuscules et majuscules.
Et de manière à prévoir tout, il faut y mettre un autre système de lecture pour parer aux problèmes des handicaps divers.

Voilà, c'est aussi simple que ça en somme.

Maintenant, chacun est libre de choisir ce qu'il veut. Ce que je sais, ce que je retiens, c'est uniquement lié à mon expérience sur le terrain.
Et depuis plus d'un an, mon expérience me dit que je n'ai pas eu tort de mettre en place un système aussi simple.

Pourquoi devrais-je adopter un système lourd générateur de captcha sur mes sites clients alors qu'en quelques lignes, je résoud le problème (liée à une variable en session je l'avoue)

Aléatoire ou pas, le résultat je le vis sereinement depuis de longs mois.
Plus aucun formulaire n'est l'objet de spam sur des dizaines de sites. Smiley smile
Bison a écrit :
Sans compter que certains poussent le vice d'y mettre des fonds qui rendent le visuel indéchiffrable, des polices encore moins lisibles qui ne permettent parfois même pas de faire la diff entre minuscules et majuscules.
C'est vrai que lorsque l'on a du mal à déchiffrer un captcha image, on est en droit de se demander si cette solution est vraiment adaptée.

C'est un frein à l'accessibilité, et en plus tout captcha déchiffrable par un humain le sera tôt ou tard par un bot. Ca ne fait que reporter le problème.
Modérateur
Bison a écrit :

Pourquoi devrais-je adopter un système lourd générateur de captcha sur mes sites clients alors qu'en quelques lignes, je résoud le problème (liée à une variable en session je l'avoue)

Aléatoire ou pas, le résultat je le vis sereinement depuis de longs mois.
Plus aucun formulaire n'est l'objet de spam sur des dizaines de sites.


Oui, tout à fait, c'est pourquoi je disais que c'était au choix du Webmaster et que c'était du cas par cas. Je voulais seulement signaler qu'un système aléatoire, que ce soit une image ou non, sera toujours plus efficace à long terme contre un spammeur insistant (un emmerdeur de première quoi !) et ne demandera pas l'intervention du Webmaster pour réagir.

Faire un système aléatoire, et je ne parle pas d'images ici nécessairement, mais plutôt disons d'un générateur d'équations mathématiques simples ne va quand même pas prendre beaucoup de ressources. Les serveurs sont de plus en plus puissants et les technologies derrières aussi. Ce n'est pas un petit random qui va tuer le serveur. Smiley biggrin

Par contre, si ton système est efficace pour toi et tes clients, inutile de changer. J'ai implanté une petite protection encore plus simple que la tienne (pas au niveau du code, mais au niveau de la protection) et les clients qui recevaient du spam n'en recoivent plus. Je n'ai pas eu recours non plus aux captcha images. Si un jour cela recommence, j'appliquerai une autre solution.

Il reste tout de même que le niveau de protection est relatif au niveau d'attaque. Ton niveau te conviens, mais pour un site très populaire où des spammeurs se concentrent à l'année longue pour exploiter les formulaires, c'est une autre histoire. Donc, toujours et encore, c'est du cas par cas. Smiley smile
Modifié par Tony Monast (15 Dec 2006 - 14:52)
Tony Monast a écrit :
Il reste tout de même que le niveau de protection est relatif au niveau d'attaque. Ton niveau te conviens, mais pour un site très populaire où des spammeurs se concentrent à l'année longue pour exploiter les formulaires, c'est une autre histoire.

J'ai expreg.com qui est ouvert depuis 2002 à tous les vents si je peux m'exprimer ainsi... et je n'ai pas eu le moindre souci avec ce genre de code.
Par contre, depuis 15 jours, j'ai mis le forum et le livre d'or en "jachère"
Smiley langue car je me prenais la tête avec quelques emmerdeurs qui floodaient en s'amusant avec des thread remplis uniquement de smileys.

Terminer le côté "Entrée libre", je vais modifier tout cela pour un accès réservé uniquement. Celui qui voudra entrer fera l'effort de s'enregistrer et les autres iront jouer ailleurs. Smiley smile
@bison:

a écrit :
RoseGrenouille, tu mélanges tout et tu racontes un peu n'importe quoi.


Merci , c'est toujours agréable....

Quoi qu'il en soit , si mon post était mal formulé et un peu brouillon, laissant supposer que je racontes un peu n'importe quoi et que je mélange tout ( ce qui n'est pas forcément une tare soit dit en passant), je sais encore parfaitement faire la différence entre un REGEX qui va contrôler le risque d'injection d'entêtes et un CAPTCHA ou ton système qui lui va empêcher l'envoi du formulaire en l'absence de la bonne valeur retournée.

Effectivement aussi, je n'ai jamais cotoyé de bot dans ma vie intime , ni programmé un MAIS me semble-t-il que ca ne me parait pas très compliqué de trouver le chiffre 12 surtout quand a peu près tous les sites anti spam recommandent pour cette technique d'avoir minimalement 8 caractères, dont des lettres, et une sensibilité à la casse.....

mais je ne voudrais surtout pas tomber dans un discussion stérile de base donc je considères le sujet [Interrompu].
RoseGrenouille a écrit :
Effectivement aussi, je n'ai jamais cotoyé de bot dans ma vie intime , ni programmé un MAIS me semble-t-il que ca ne me parait pas très compliqué de trouver le chiffre 12

Et bien c'est là que tu te trompes RoseGrenouille ! Smiley cligne
Entre indiquer le chiffre 12 directement au bot et lui demander de trouver, tout seul, la réponse à un énoncé qui peut prendre de multiples formes pour un même résultat, le robot n'y parvient pas.
C'est ça que tu ne comprends pas, un bot est une machine qui n'a pas la notion de discernement.
Un bot trouve un formulaire et sa seule réaction, imposée par son créateur, c'est de bourré chaque champ avec une info répétitive.

RoseGrenouille a écrit :
surtout quand a peu près tous les sites anti spam recommandent pour cette technique d'avoir minimalement 8 caractères, dont des lettres, et une sensibilité à la casse.....
Quel est le rapport entre le spam et le nombre de caractères ??????
Absolument aucun !

Tu pourrais très bien créer une série d'images fixes, sélectionnée de manière aléatoire et sur lesquelles serait inscrit un simple mot : "Pouet" "Bof" "Oups"
Cela fonctionnerait tout aussi bien !
Tu pourrais très bien, avec ton captcha, ne générer aléatoirement qu'une seule lettre, un seul chiffre, un seul symbole !
L'efficacité n'est pas liée à la quantité de caractères.

Une valeur de calcul et un simple champ texte, c'est portable dans tous les cas.
Le reste, oui bof...
Il y a des centaines de sites sur le spam dont la plupart sont créés par des gosses qui n'ont pas la maîtrise de leur sujet et qui raconte un peu n'importe quoi parce qu'ils l'ont lu ou qu'ils ont fait des copié/collé d'autres sites.
Le site du zéro par exemple, avec ses milliers de membres qui croient dur comme fer ce que préconise le webmaster.
Et pourtant, la grande majorité des tutos raconte n'importe quoi dans le sens où, ne maitrisant pas son sujet, étant lui-même en apprentissage, l'auteur donne des indications et appliquent des méthodes à ne surtout pas suivre. Résultat, on se retrouve en face d'internaute qui disent :

- si c'est dans le tuto c'est que c'est vrai !

Bref, comme tu dis, c'est sans doute une discussion stérile, du moins pour moi à qui elle n'apporte rien que je ne sache déjà.
Tu aimes les captcha et c'est ton droit le plus strict que je respecte.
J'ai donné une solu simple et moins lourde, une solu fiable, libre à toi de l'utiliser ou pas.
Smiley smile

Pour conclure, dis-toi bien qu'avec les millions de sites mal codé, les concepteurs de bots ont autre chose à faire que de créer une option à leur machine qui va indiquer 12 au moment où ils viendront butiner sur un de mes sites. Et quand bien même cela devrait arrivé, j'en m'en rendrais compte immédiatement et je changerais mon énoncé/valeur en 14 par exemple. Smiley cligne

RoseGrenouille a écrit :
ce qui n'est pas forcément une tare soit dit en passant
Absolument, mais je ne t'ai pas traité de taré, que je sache ? Smiley decu
Voici une idée pour vos combats anti-bots. Les robots semblent fonctionner en mettant des mots dans des cases, généralement un titre dans les champs "text" et du texte dans les <textarea>. Comme le disait Bison, ils remplissent tout n'importe comment sans discernement, donc plutôt que de demander aux humains de faire quelque chose, demandez aux bots de ne pas faire quelque chose.

Par exemple, en bas de formulaire, ajoutez un textarea de 2 lignes avec pour mention "ne rien inscrire dans ce cadre" (comme dans l'administration Smiley cligne ). Et si quelque chose est inscrit dans le champs lors de l'envoi, invalidez la soumission. Mieux encore, vous pouvez mettre le tout dans un div et le cacher par CSS pour éviter toute confusion. 99,99% des bots se feront prendre, le risque d'erreur de la part des utilisateurs est de 0% si le div est caché et il fonctionne sans intervention humaine (sans oublier l'accessibilité qui reste préservée).

Hey, après tout c'est aux bots de faire le boulot, pas le contraire. Smiley smile
J'y ai déjà pensé plusieurs fois à cette idée de blouser le bot avec un champ vide mais je ne l'ai jamais testée.
a écrit :
Absolument, mais je ne t'ai pas traité de taré, que je sache ? decu

non non, je ne dis pas ça, je trouvais juste un peu le ton hautain ou rabaissant sans trop de raisons, mais encore une fois , il est difficile de rendre compte des émotions dans un Post , donc laissons tomber cela .... Smiley langue

Pour ce qui est du fonctionnement du bot, je m'inclines et je vais aller voir ça de plus près, et essayer de comprendre comment ca marche...

Alors partant du principe que une petite chose simple peut bloquer le bot, je trouve l'idée d'Hubert très originale, et je l'ai mis en ligne ce matin.

J'ai fait plusieurs essais pour l'emplacement de la zone <textarea>, d'abord a la fin du formulaire, puis maintenant juste en deuxième position, sous 2 balises de texte. Le <DIV> est caché par le CSS dans les navigateurs à rendu visuel. Pour l'instant, le spam rentre encore.....

@Hubert: pourquoi faire ça spécifiquement avec le textarea ? As tu testé ça avec un champ texte " noyé " dans les autres champs du formulaire ?
Est ce que la positon du champ, son nombre de colonnes, de rangées, son nom même ( j'ai evité le "name=antispam", peut etre que c'est inutile mais bon....comment je ne connais pas les bots, je ne prends pas de chance d'utiliser des termes trop explicites) peuvent avoir une influence ?

Remarques je vais peut être mettre vos deux systèmes, l'un au dessus de l'autre.... avec ca je devrais être tranquille ( un peu plus...)

Merci !!!
Pages :