IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Spam sur mon forum


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut [Sécurité] Spam sur mon forum
    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

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Salut,

    Oui il y a une solution, c'est de changer le nom des inputs en ajoutant des chiffres aléatoires à leur nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="username12355466">
    Puis à mettre un champs hidden correspondant à ce code.

    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 ) Puis plus qu'un simple numéro aléatoire en fin de champ, ce serait encore plus efficace d'avoir un nom aléatoire totalement !

    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+

  3. #3
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Salut et merci pour ta réponse.

    Citation Envoyé par KiLVaiDeN
    Puis à mettre un champs hidden correspondant à ce code.
    Alors, en fait, je ne suis pas super expert en sécurité (j'avoue très franchement que c'est quelque chose qui me dépasse, mais alors à un point).
    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 ???

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    POST http://tonsite.com/actionpage.php champ1="toto";champ2="viagra";champ3="c youpi"
    Le but c'est que ça requête ne fonctionne plus. Pour cela, le seul element sur lequel tu peux agir, ce sont les noms des champs. Ou le nom de la page. Mais modifier le nom de la page à chaque fois c'est un peu difficile et lourd quand même

    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 C'est ce que je te proposais au début.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <input type="text" name="lka1jelazkjazelkazej">
    <input type="text" name="zza2qsdqsdqsdqsdlkazej">
    <input type="text" name="mma3jelazkqsdqsdqsdqsqqqzej">
    <input type="text" name="uya4jddjazelkazej">
    et de l'autre coté à la reception, tu parcours le tableau des variables de formulaires reçues, en testant le quatrième caractère dans un switch

    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 Il y aura toujours le guru qui va trouver un moyen de spammer, mais c'est valable pour tous les forums dans ce cas et on ne peut rien y faire !

  5. #5
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    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+

  6. #6
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par nako
    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 ???
    Si votre forum est un développement privé, il est étonnant que des pirates organisés s'amusent à le pirater. En effet, les "sociétés" qui créent des robots visent des cibles comme vBulletin, phpbb, InvasionBoard pour que leurs "scripts" puissent s'exécuter sur un maximum de cibles. Et donc vendre le maximum de viagra ou sucharger le maximum de serveurs et créer le maximum d'erreurs de déni de service.

    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.

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par Alexandre T
    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.
    Et faire un nslookup ou un gethostbyaddr() peut donner des pistes...

  8. #8
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par Alexandre T
    Si votre forum est un développement privé, il est étonnant que des pirates organisés s'amusent à le pirater.
    Ca me semble étrange aussi.
    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.

  9. #9
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par Mr N.
    Et faire un nslookup ou un gethostbyaddr() peut donner des pistes...
    Ah yes, il va vraiment falloir que je ressorte mes cours de réseau !
    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.

  10. #10
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    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.

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    C'est pas mal comme méthode mais tu fais comment si la nature des spams change ?

  13. #13
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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)

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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 ?

  15. #15
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    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.

  16. #16
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    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

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    et non, il n'est pas protégé par inscription. N'importe qui peut poster
    Ah voilà c'est pour ça, je pensais qu'un robot spammeux c'était inscrit et s'amusait à poster.....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Forumactif] Problème d'upload sur mon forum
    Par farine2blé dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 25/07/2007, 10h22
  2. Réponses: 11
    Dernier message: 25/11/2005, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo