|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Bonjour à tous,
je suis victime depuis aujourd'hui de spam sur mon forum (un forum fait maison). Les utilisateurs n'ont pas besoin de s'identifier pour laisser un message, et j'imagine qu'il s'agit de robots qui insèrent des messages "enlarge your peniche, buy viagra" et autres réjouissances. Mon formulaire est totu simple : un champ auteur, un champ titre du message un champ message (textarea). Je ne souhaite pas mettre en place d'image de controle, ni d'identification. Avez-vous une proposition ? soit pour détecter qu'il s'agit d'un robot (j'ai bien l'adresse IP mais bon, elle peut changer régulièrement) soit pour gruger le robot (?) Merci d'avance. Nako |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 714 ![]() |
Salut,
Oui il y a une solution, c'est de changer le nom des inputs en ajoutant des chiffres aléatoires à leur nom : Code :
<input type="text" name="username12355466"> Ainsi, quelqu'un qui navigue sur ton site peut entrer un message sans pb, mais quelqu'un qui utilise un bot pour passer outre le formulaire de ton site, planterait. Il serait obligé de faire un get d'abord sur ta page pour obtenir le code, et pour soumettre sa requete ( ça pourrait le décourager En plus, tu pourrais mettre en place le système dont tu parles pour bloquer une même ip. Je vois mal comment ils pourraient spammer si tu bloques une même ip pendant une minute En plus de tout ça, ajouter un javascript permet de filtrer les bots; par exemple récupérer le code dont je parlais plus haut en AJAX afin de tromper le bot serait une bonne idée ! Peut-être que d'autres personnes ont d'autres idées A+
__________________
K |
|
|
00
|
|
|
#3 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Salut et merci pour ta réponse.
Citation:
Bref, tout ça pour te demander si tu pouvais détailler un peu plus le principe. Comment controler qu'on est bien passé par le formulaire, et pourquoi le robot se fait avoir. Merci et désolé pour le novice. En fait, je vis dans le joli monde de Heidi, ou tout le monde est gentil, pourquoi des méchant gens s'amusent à spammer un pauvre forum d'une association locale qui doit avoir en totu et pour tout 50 utilisateurs ??? |
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 714 ![]() |
Salut,
Le bot spam ton forum en déclanchant un post(ou un get, si ton form etait en method get) directement sur ta page de résultat(celle pointée par ton attribut "action" de ton form) avec les champs prérenseignés. Donc il fait quelque chose du style : Code :
POST http://tonsite.com/actionpage.php champ1="toto";champ2="viagra";champ3="c youpi"
Donc, vu que ton but est de changer les noms des champs à chaque fois pour que le bot ne puisse pas envoyer la requete directement à ta page action, il faut générer des noms de champ aléatoire Mettre le champ hidden pour le code, ça permet ensuite dans ta page de résultat de récuperer le champ plus facilement. Mais vu que ton formulaire est simple, tu peux t'en tirer avec une astuce de ce type : Génère le nom de ton champ avec un nom aléatoire avec par exemple la 4ème lettre representant l'indice de ton champ, par exemple : Code :
Important : gerer les sessions peut aussi stopper le bot. Tu set la session dans la page d'accueil, et si la session est valide, tu autorises le post, sinon tu le rejètes. Avec toutes ces sécurités t'es tranquille pour la plupart des script-kiddies
__________________
K |
||
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Ouah !
merci pour le leçon d'attaque de formulaire PHP. J'ai tellement demal à m'imaginer que des gens puissent s'amuser à développer des bots pour ça ... que j'ai encore plus de mal à trouver la parade. Je vais mettre tes explications en application ! Merci encore. Je vous tiendrai au courant de l'efficacité du truc !!! Merci. a+ |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Citation:
Donc si votre forum d'association, de peu d'utilisateurs est ainsi spammé, que c'est un développement de votre cru, alors il y a fort à parier que vous connaissiez le coupable. Vous pouvez mettre en place la solution de KiLVaiDeN . Et en même temps, voire un peu avant, stocker les ips et les dates de soumissions de ces messages. Comparez les aux ips et heures de connexion de vos autres visiteurs.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Citation:
Je pensais plutôt à un robot qui scruterait "au hasard" les pages web et tenterait de remplir des formulaires. Les messages on tous plus ou moins la même forme : titre : cialis ou viagra et dans le corps du message, des tentatives d'insertion de bbcode. Du coup, comme je n'utilise pas le bbcode (développement perso très basique), les liens ne sont pas cliquables. Quant à la personne de mon entourage qui ferait ça, j'avoue que ne voit pas mais pourquoi pas ... En tout cas, merci de vous être penché sur mon cas. Je vous tiens au courant. Cordialement, nako. |
|
|
|
00
|
|
|
#9 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Citation:
C'est vraiment pas ma tasse de thé tout ça : sécurité + réseau ! (oui, je sais, vous vous en étiez aperçu Merci encore. |
|
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Bonjour à tous,
comme promis, je vous tiens au courant de l'évolution : Après une période sans message moisi, l'activité a repris. Je me suis donc décidé à faire une petite rustine en attendant plus robuste (à forum maison, réparation maison Ca tiendra le temps que ça tiendra mais pour l'instant, ça fonctionne. Sinon, pour éclaircir les idées, il s'agit bien d'un robot ! Il ne s'attaque pas spécialement à mon forum mais à beaucoup d'autres (des amis m'ont rapporté le même problème). Et il utilise à chaque fois une adresse IP différente. Je garde les IP au cas où, mais je ne vois pas trop quoi en faire. A tous les coups le propriétaire des ces adresses n'y est pour rien. Enfin, en tout cas, merci pour vos explications, elles m'ont permis de mmieux comprendre le contournement de la sécurité pour faire ces spams. A++, je met résolu. |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
J'ai également constaté quelques spams sur mon forum (code perso également), mais c'est du "soft" genre "buy nike" ;o)
J'ai résolu le probleme en faisant une fonction qui me renvoie un "coefficient de spammage" et qui marque supprimé le message dès qu'il est posté (comme ca, ca evite de supprimer des vrais messages, je peux toujours les démarquer par la suite. Ce "coefficient" est calculé de maniere simple : je calcule la fréquence d'apparition des mots dans un message et je regarde le pourcentage des mots les plus utilisés, ainsi que la taille du message. En effet, mes spams sont composés de "gros" message (genre 500 mots minimum) avec toujours les memes mots qui se repetent. Donc si le message fait plus de 100 mots par exemple et que les 3 mots (superieur a 2 lettres) qui reviennent le plus souvent composent plus de 10% du message, il est marqué comme spam. A titre de vérification, j'ai passé cette fonction sur les anciens messages du forum (9000 messages environ), et seul 1 message a été marqué a tort... ce qui me parait pas mal comme heuristique ;o) J'avoue que le coup des champs a nom variable a l'air pas mal, mais je crois quand meme, vu que ce sont des forums "persos", que le bot doit lire la page avant de poster...
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
C'est pas mal comme méthode mais tu fais comment si la nature des spams change ?
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
evidemment, si la nature des spams change, ca marchera plus... j'ai rajouté un p'tit filtre supplementaire sur certains mots interdits... mais bon, les gens qui developpent les robots les font évoluer avec le temps, donc a mon avis il faut faire evoluer le code les contrant en meme temps. Il est difficile de faire un code qui les bloque une fois pour toute (ou alors il faut une verification par image générée en php par exemple).
Donc : j'adapte mon code ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
C'est quoi ton forum Fladnag ? Un phpBB ? Comment ce fait-il que le robot puisse spammer ton forum si il est protégé par un espace membre ?
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
Hello, comme fladnag, mon forum est un forum que j'ai développé de A à Z (pour voir comment ça marche à vrai dire, et pour faire un truc light aussi) et j'ai choisi de ne pas authentifier les personnes qui postent (pour que les gens postent plus facilement).
Ce problème de spam est en quelque sorte le revers de la médaille, mais j'ai utilis" exactement le même système de détection que fladnag et pour l'instant, ça marche pas mal. J'enregistre le message comme si de rien n'était (en autre pour conserver l'adresse IP) mais je le "cache". Voila. |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
nan, c'est pas un phpBB, il est basé (mais ca fait longtemps) sur un "Dalai Forum" (doit y avoir une 50aine de sites max qui l'ont ;o) qui avait pour charte graphique l'ancienne de feu KetiX pour ceux qui s'en souviennent.
Mais je l'ai refait entierement y a quelques temps (html, php, sql, structure de données, etc...). Maintenant il est vrai que mes champs n'ont pas des noms tres spécial, auteur, titre, message... et non, il n'est pas protégé par inscription. N'importe qui peut poster
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#17 | |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Citation:
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com