ANTI FLOOD SANS LA LIBRAIRIE GD

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 18 août 2005 à 08:17
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006 - 2 sept. 2006 à 14:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33290-anti-flood-sans-la-librairie-gd

f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
2 sept. 2006 à 14:29
J'ai oublié de vous passer l'adresse désolé.
la voici: http://www.phpcs.com/code.aspx?ID=39397
++
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
2 sept. 2006 à 14:25
Re bonjour tout le monde!
Je viens de poster une nouvelle source, que j'ai codé juste la nuit, elle traite encore de l'anti-flood sans gd..eh oui le petit marcel il faut le porteger à n'importe quel prix! ;P
Suite à vos remarques et critiques (merci) et surtout la dernière suggestion de masternico, l'idée de l'application falsh, j'ai donc fait un petit mélange flash/php très basique et j'aimerai bien si vous y jetter un coup d'oeil pour vos critiques et essayer de l'améliorer.
Et pour celle là, si j'aurai plus de temps, j'essayerai de voir comment appliquer l'idée de malik, sinon ça reste comme ça pour l'instant.
++
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
21 juil. 2006 à 10:56
je passais par la et lisais tout vos commentaires.
Bien que le sujet de la sécurité aurait pu faire l'objet d'un post à part, je voulais répondre à Grenard qui disait qu'un robot ne pouvait déchiffrer facilement la zone chiffrée.
Il est une appliquation que pratiquement tout détenteur de scanner possède : un reconnaisseur de caractères qui te lit une page de livre et la transcrit en fichier texte modifiable. Si un tel programme fonctionne sur l'ordi des communs des mortels, alors imagine ce que peut faire le même programme sur l'ordi d'un hacker acharné et débrouilard. Il lui suffit juste de "scanner" la portion de l'écran ou apparait l'image chiffrée et optient en retour le numéro correspondant.
Donc même si l'idée de ne pas utiliser la GD pour faire son affaire est interessante, cela demandera un peut plus que de simples images de chiffres, car même si le but est de proteger le petit marcel en maillot de bain (lol, je l'ai trouvée excelente celle la), le hacker finira par s'en occuper car son but est de montrer qu'il est plus fort que les autres... Et comme tu l'empêche de passer à son aise, il forcera le passage, peut importe ce qui se trouve au bout... juste pour le fun...
F BNKCM ==> j'espère que tu n'as pas baissé les bras car l'idée est interessante. Il faudrait remplacer les images par une application flash qui afficherait un piaf sur un arbre, et il faudrait pouvoir répondre s'il se trouve sur la branche, sur la racine, etc... comme l'application flash est une vidéo, cela complique la tâche d'un ou d'une hackeuse (pourquoi pas, on se les imagine toujours binoclar et moche comme des poux... mais c'est peut être une petite pépé roulée comme une déesse? he he he) qui s'attache à déchiffrer une image fixe. De plus, il faudrait un timer de temps de réponse pour éviter que le robot n'ai trop de temps pour répondre à la question...
A+
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
16 nov. 2005 à 19:28
Salut,
Anthomicro et Psykocrash => Alors en fin de compte mon petit code devient inefficace :(
Je suis d'accord, mais pour un site sans la GD, c'est peut être une solution efficace surtout si on la combine avec l'idée que Malik7934 a proposé un peu plus haut.
Si j'ai un peu de temps je pourrais m'y pencher dessus.
Psykocrash => Les critiques constructives sont toujours les bienvenues (même si elles sont vexantes des fois..snif...) ;)
Merci pour votre contribution.
++
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 nov. 2005 à 18:57
Tout à fait d'accord avec toi :)
Mais bon je crois qu'il faudrait qu'on en reste là, sinon il va être dégouté d'avoir posté sur phpcs :p
f bnkcm c'est pas toi qu'on critique, c'est la méthode !!
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 nov. 2005 à 15:25
Tout comme le fait de choisir une image aléatoirement, si tu gardes la même image c'est inefficace, mais à choisir entre deux solutions inefficaces, autant prendre celle qui bouffe le moins de performances si tu vois ce que je veux dire :-)
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 nov. 2005 à 12:47
Plus rapide, et inefficace ^^
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 nov. 2005 à 22:44
c'est surement plus rapide que de faire appel à gd je pense ;-)
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
14 nov. 2005 à 18:59
Merci je sais ce que j'ai dit, mais comme certains sont obligés d'utiliser ce code, autant l'optimiser et ne pas fatiguer le serveur avec des changements de nom de fichier a chaque ouverture de la page...
:)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 nov. 2005 à 14:22
ça revient à faire ce que tu disais peu efficace dans ton commentaire précédent :-)

"il lui suffira de télécharger toutes tes images, et créer un robot tout bête. Il mettra les correspondaces image->valeur dans la mémoire du robot, et le robot n'aura plus qu'à comparer le contenu des images avec les images qu'il a en mémoire"
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
13 nov. 2005 à 14:16
Ah je viens de penser à un truc. Tu peux, au lieu de donner un nouveau nom aux fichiers à chaque utilisation, donner le même nom à tous les fichiers. En fait tu appelleras un fichier (disons antiflood.php) qui se chargera de renvoyer une image choisie aléatoirement. Exemple :
Fichier avec un code à 5 chiffres :

<html></html>

et le fichier 'antiflood.php' :

<?php
// Soit $code ton code anti flood
// Récupération de $code
// Sélection aléatoire d'un nombre dans $nombre
$code = $code.$nombre;
readfile($nombre.".png");
?>

Je ne t'ai donné là que l'idée générale, à toi de la coder si ça t'intéresse :)

Bonne continuation !
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
13 nov. 2005 à 14:03
Le gros problème de ce genre de fausse sécurisation c'est que si un floodeur en veut à ton site, il lui suffira de télécharger toutes tes images, et créer un robot tout bête. Il mettra les correspondaces image->valeur dans la mémoire du robot, et le robot n'aura plus qu'à comparer le contenu des images avec les images qu'il a en mémoire (donc même pas besoin de faire de la reconnaissance de formes) et renvoyer la valeur correspondate. Donc même si tu changes à chaque chargement le nom des fichiers, ça n'influra pas sur le comportement du robot. C'est pour ça que l'on utilise une image unique (je veux dire par la qu'on n'utilise pas une suite d'images).
Cela dit, mieux vaut une fausse sécurisation que pas de sécurisation du tout (comme les caméras factices), ça en découragera quelque uns, c'est toujours ça de gagné !
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
21 août 2005 à 12:29
Tout à fait Malik7934, mais pas pour "1/ tu génères un chiffre aléatoire et tu demandes d'entrer ce chiffre "+1" " car un robot qui saura lire le contenu de l'image saura bien faire l'addition avec "1", non?
La 3ième me semble faisable avec cette class, ça serait peu être la version 2 ;)
++
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
20 août 2005 à 09:37
"2/ tu poses une question simple: quelle est la couleur du ciel -> bleu"

Ils prennent en compte la météo ? bon ok je sors ^^
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
20 août 2005 à 09:06
Hello,
Juste pour rajouter un commentaire, je viens de faire une petite promenade sur des sites parlant de flood et en fait, la solution la plus simple et la plus efficace est de poser une question.

Plusieurs cas de figure:
1/ tu génères un chiffre aléatoire et tu demandes d'entrer ce chiffre "+1" par exemple
2/ tu poses une question simple: quelle est la couleur du ciel -> bleu
3/ tu affiches une série d'image représentant toutes la meme chose et tu demandes qu'est-ce que c'est. Exple un chat.

J'ai lu qqpart que c'est la meilleure méthode car elle fait intervenir l'humain. Ceci dit, des spammeurs ont trouvés le moyen de parer ce problème! Ils créent des sites porno gratuits et pour y entrer, le mateur doit répondre à une question... qui est exactement celle posée sur le site utilisant ces méthodes d'anti-flood! Simple et efficace...

En d'autres termes, on est jamais à l'abri... mais c'est bien sûr vrai qu'il est inutile de protéger une grange avec un tank ou de mettre une porte blindée si la fenêtre est ouverte (ouhaou les belles phrases ;))
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
19 août 2005 à 19:37
Oui voilà, je cherche pas à dire que mon code est parfait ou invulnérable, en informatique y a pas ce terme, il faut se mettre d'accord sur ça ok? (même avec la GD en utilisant vos RSI ;P )
Cette source c'est pour les petits sites ne disposant pas de la GD, mais qui pensera à attaquer comme ces pauvres avec un tel outils?? ("Celui là ne mérite pas d'être sur Terre..." lol)
Hmm.. Ok, On peut poussez un peu encore la sécurité à son maximum avec cette source, comment? Eh bien, l'utilisateur n'aura qu'à changer les images de temps en temps; parfois en chiffres, parfois en lettres, parfois tordues, parfois non... Et voilà!
Non mais y aura une autre façon mieux que ça, si y a des idées n'hésitez pas!
++
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
19 août 2005 à 19:04
non je sais que de toute manière quelqu'un qui voudra eviter tout flood optera pour une image generée avec une GD (plus sur que ta methode) mais bon, le but de ta source n'est pas de concurrence GD donc ta class reste neanmoins efficace !
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 18:41
le problème de ta solution actuelle c'est que les chiffres sont des images identiques toujours placées pareil, le robot n'a plus qu'à lire les 9 chiffres, il copie les 9 images différentes dans sa mémoire, et il les recherche dans l'image, vu que la position verticale ne change jamais, c'est assez simple. Il faut juste avoir le courage de faire le robot quoi lol
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
19 août 2005 à 18:38
>> fjxokt
Si on parle de Robots Super-Intélligents, qui vont pas sûrement s'attaquer à un site hébergé là où il y a pas de GD (vous voyez de quels sites je parle là, un peu comme ce que Anthomicro a dit) alors même l'image bien tordue générée avec une GD ne resistera à ces R.S.I ...
Mais là, une idée encore qui va améliorer cette protection:
Je vais modifier les images, pas en tordant les chiffres mais plutôt en les transcrivant en lettres: c'est à dire les images contienderont "zéro" au lieu de "0", "un" au lieu de "1"...
Je vais mettre à jour la source pour mieux comprendre, vous me dites ce que vous en pensez.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 16:44
Tout à fait, étant donné que ce sont des images préenregistrées, il est facile de leur ajouter quelques effets de torsion, etc...
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
19 août 2005 à 16:32
malik7934 a raison
ce genre de robot qui "lit" l'image est tout à fait d'actualité, et un robot un tant soit peu perfectionné pourra lire ton image sans probleme
Le seul moyen pour leur compliqué la tache est comme ça a été dit plus haut, de bruiter l'image, de la tordre, et d'y inserer des lignes qui vont perturber le bot
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 12:57
ouais je vois, on en revient au même problème lorsque Coucou m'avait suggéré ça, moi je n'utilise ni le 0 ni le o pour éviter les confusions.
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
19 août 2005 à 12:46
Tout à fait.

Mais pour cette ligne " $code=substr(md5(microtime()),0,$nbrcar); " c'est vrai que c'est plus propre et court, le problème c'est que les images ne sont que des chiffres et donc pour utiliser ça il faut avoir tous les caractères (chiffres et lettres) en images (0.jpg, 1.jpg....a.jpg, b.jpg, c.jpg... Il faut être bcp patient pour faire ça ;P ), tu vois ce que je veux dire..

Merci pour la note.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 00:18
Salut,

je trouve que c'est une très bonne idée. Le javascript c'est à bannir selon moi si on veut faire des pages accessibles. Ensuite les robots ne sont pas spécialement intelligents, il y en a bien sûr qui sont au top, mais ceux-la ne vont pas s'attaquer au site de marcel qui joue dans la marre si tu vois ce que je veux dire... Une protection comme celle-ci convient parfaitement, au pire vu que ce sont des images que tu as crées tu peux très bien infliger des rotations et effets spéciaux aux caractères, ça ne mange pas de pain et ne nuit pas aux performances.

Tu peux par contre optimiser ça vu que tu utilises tous les caractères (cf ma source et le commentaire de Coucou747) :

# $caracteres array('num'> '0123456789', 'alpha' => 'abcdefghijklmnopqrstuvwxyz');
# $nbr_caracteres = strlen($caracteres[$car]);
# $code = '';
# for($i = 0; $i < $nbrcar; $i++)
# {
# $code .= $caracteres[$car]{mt_rand()%$nbr_caracteres};
# }

> $codesubstr(md5(microtime()),0,$nbrcar);

8/10 pour ma part.

a +
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
18 août 2005 à 18:12
Comme j'ai dit dans la présentation, cette class est juste pour remplacer la librairie GD en ce qui concerne la protection anti-flood. Donc si ce que tu dis est vrai (que les robots peuvent lirent le contenu de l'image) alors c'est le même cas avec l'image générée par la GD, donc des images tordues ici feront l'affaire aussi, j'ai déjà dit ça.
Mais je suis avec GRenard, je ne crois pas qu'ils sont si intelligents sinon il faut trouver une autre méthode que la vérification du code.
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
18 août 2005 à 14:03
GRenard, je serais pas si categorique si j'etais toi... quel est donc l'interet pour les 'whois' par exemple d'utiliser des codes a retaper qui soient difficile a lire a ton avis? Je crois que je vais camper sur mes positions :) Si je devais developper un tel outil, je sais exactement dans quel sens je partirais: un melange de screenshot et datamining.
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
18 août 2005 à 13:53
Les robots ne sont pas SI intelligents encore, ils doivent être capables de détecter que c'est un code caché et ils doivent trouver la boîte texte où l'écrire... Faites dont un robot capable de faire ça, vous allez voir c'est du sport... L'image en tant que tel, tu ne sais pas si elle est en 1 morceau ou en plusieurs, c'est hard ca.
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
18 août 2005 à 12:26
Je ne suis pas sûr de ce que tu dis là mais je vais chercher.
Mais alors si c'est ça le problème alors la solution est simple, tu change les images avec celles qui te semble illisible par le robot et voilà!
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
18 août 2005 à 11:36
Le probleme est ailleurs. le robot ne va pas lire le code, mais reconnaitre les chiffres sur l'image elle meme. C'est pour ca que la plupart des flooders evolues ont des images toutes tordues avec du bruit dessus!
f bnkcm Messages postés 57 Date d'inscription dimanche 2 mai 2004 Statut Membre Dernière intervention 6 septembre 2006
18 août 2005 à 11:34
Non mais le robot ne pourra pas lire ces images car leurs noms changent à chaque fois et jamais par exemple l'image qui contient le caractère "1" se nommera "1.jpg" elle aura plutôt un nom comme "kjht.jpg" ou "qlayd.jpg".. dépendant du nombre de caractères de cryptage. Sinon tu peut changer les images et mettre d'autres à ton goût mais ça changerai rien.
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
18 août 2005 à 08:17
Salut, dommage que ton anti flood affiche un chiffre autant facile a lire... je pense pas qu'il tienne une seconde face a un robot. En employant des caracteres aussi simple a l'affichage, autant utiliser du js pour afficher un chiffre qui ne soit pas dans le code de ta page en jouant avec fromCharCode. Ce sera plus simple a l'emploi et tout autant efficace.
Rejoignez-nous