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 :

[Système] Bloquer une IP en cas de mots grossiers dans un formulaire


Sujet :

Langage PHP

  1. #1
    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 [Système] Bloquer une IP en cas de mots grossiers dans un formulaire
    Bonjour,

    Alors là je viens juste d'avoir une idée assez violente dans le fond, mais pas dans le forme autrement dit assez simple à réaliser, bien que je manque d'expérience pour y arriver seul.

    L'idée est la suivante:
    -Un zozo s'amuse à entrer du texte dans mon formulaire de commentaire.
    -Comme le gars est un génie, il a entré des mots grossiers dans son formulaire.
    -Le script cherche parmi les mots du formulaire si il y a un mot grossier parmi la liste des mots grossiers répertoriés dans un tableau.
    -Si il n'y en a pas ça passe.
    -Si il y en ne serait-ce qu'un, j'expédie son adresse IP dans la base.
    - Un message indique au génie que si il valide son formulaire sans modifier les mots grossiers, son IP est bloquée (avec éventuellement en bonus un lien vers le site du ministère de l'intérieur, section informatique, ça fait toujours réfléchir).


    Donc pour la deuxième partie, blocage de l'IP et tout je sais faire.

    Par contre je ne sais pas comment identifier un ou plusieurs mots à l'intérieur d'un texte parmi d'autres mots répertoriés comme indésirables.


    Pourriez-vous m'aider quelque peu s'il vous plait ?

  2. #2
    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
    Ah remarquez j'ai une solution :

    A défaut de trouver un mot précis dans un texte, je sais comparer deux textes.

    Donc je peux comparer le texte iniatialement proposé, y remplacer les mots grossiers détectés par des **** puis comparer les deux textes.

    Si il n'y a pas eu de changements c'est bon. Si il y a des changements, c'est donc que mon ami a voulu écrire un poème et donc son IP est bloquée.

    Vous en pensez quoi ?
    Rien?
    C'est déjà quelque chose.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Et s'il change d'ip ?
    Ca peut durer longtemps, ce jeu (au pire 256*256*256*256, si l'on exclue les ip privées, soit 4 294 967 296 solutions)

  4. #4
    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
    Oui, jusqu'à ce qu'il se lasse de se déconnecter juste pouressayer de poster un mot grossier sur le site, qui de toute façon entrainera le blocage de la nouvelle IP.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Certes
    As-tu fait une recherche dans Google, car de nombreux script ont des fonctionnalités de filtrage des mots grossiers ?

  6. #6
    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
    En fait je viens de faire un truc vraiment barbare et si vous voyez comment l'améliorer n'hésitez pas.

    Je vous donne le copier/coller (bon je m'excuse par avance pour le contenu, mais c'est l'objet du post, on peut traiter le problème avec sérieux tout de même) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    $interdit=array('#\bcon\b#i','#\bCon\b#i','#\bkon\b#i',
    '#\bconnard\b#i','#\bConnard\b#i','#\bconnar\b#i',
    '#\bconnars\b#i','#\bmerde\b#i','#\bMerde\b#i',
    '#\bmerd\b#i','#\bpute\b#i','#\bPutte\b#i',
    '#\bputes\b#i','#\bmerdes\b#i','#\bMerdes\b#i',
    '#\bpisse\b#i','#\bPisses\b#i','#\bchiasse\b#i',
    '#\bChiasse\b#i','#\bpédé\b#i',
    '#\bpédés\b#i','#\bpd\b#i',
    '#\bPD\b#i','#\bcouille\b#i','#\bCouilles\b#i',
    '#\bite\b#i','#\bBite\b#i','#\bBitte\b#i',
    '#\bbites\b#i','#\bcul\b#i','#\bKul\b#i',
    '#\bculs\b#i','#\bCuls\b#i','#\bsalop\b#i',
    '#\bSalope\b#i','#\bsaloperie\b#i',
    '#\bSaloperie\b#i','#\bsalopes\b#i','
    #\bsalopes\b#i','#\bconnerie\b#i',
    '#\bconneries\b#i','#\bConnerie\b#i',
    '#\bConneries\b#i','#\bCouille\b#i',
    '#\bChier\b#i','#\bchier\b#i','#\bchiasse\b#i',
    '#\bchié\b#i','#\bchiée\b#i','#\bpouilleu\b#i',
    '#\bpouilleux\b#i','#\bbougnoule\b#i','#\bbougnoules\b#i','#\btrou du cul\b#i','#\bTrou du cul\b#i','#\benculé\b#i','
    #\benculer\b#i','#\benculée\b#i','#\bEnculées\b#i');
    $remplace="***";
     
    //on crée une nouvelle variable dans laquelle les mots grossiers sont remplacé
    $contenu3=preg_replace($interdit, $remplace, $contenu);
     
    //on trouve le md5() pour nos deux variables
    $contenuTest=md5($contenu);
    $contenuTest2=md5($contenu3);
     
    //on compare les deux md5()
    if(md5($contenuTest)!=md5($contenuTest2))
     
    //si les deux md5 sont différents, on initialise la variable $warning.
    {$warning="Aïe";}


    Ensuite dans le script je dis que si il y a une variable warning, on expédie l'ip dans la base et on affiche un message qui dit au gars, si tu valides ça t'es bloqué pour la journée.
    Voir on bloque tout de suite sans lui laisser la possibilité de corriger.


    Mais comme vous le voyez, mon tableau est très crade, c'est le cas de le dire, ce serait bien de trouver un truc pour les majuscules en début de mot, les mots tout en majuscules etc... sans créer une case de tableau pour chaque cas de figure (même si je suis prêt à tout).

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par psychoBob
    Mais comme vous le voyez, mon tableau est très crade, c'est le cas de le dire, ce serait bien de trouver un truc pour les majuscules en début de mot, les mots tout en majuscules etc... sans créer une case de tableau pour chaque cas de figure (même si je suis prêt à tout).
    Il suffit de convertir provisoirement le texte en minuscules par strtolower(), puis d'indiquer que les mots grossiers en minuscules.
    Sinon, imagine le nombre de possibilités pour connard :
    1) connard
    2) Connard
    3) COnnard
    4) coNNArd...
    Si je ne me trompe, 128 possibilités, sans compter les fautes d'orthographe...
    Et si tu essayais du côté de SOUNDEX ?

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Personnellement, celle que je préfère est "pouilleux".

  9. #9
    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
    Personnellement, celle que je préfère est "pouilleux".
    Ne commençons pas s'ils vous plait

    Sinon je suis en train de passer les mots dans la base de données, je m'en sortirais mieux ensuite avec une boucle while, pour les placer en majuscule, au pluriel etc...

    ça va être un peu lourd pour les commentaires longs mais bon je préfère ça que des insultes en premières page.

    Je ne vois pas comment appliquer les fonctions strlower sur un array php non issue d'un mysql_fetch_array, je dois être fatigué peut être.

    Sinon pour Soundex c'est la phonétique Anglaise, ça va demander une fonction pour le Français, là j'ai pas le courage.

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu reçois ton commentaire dans un POST. C'est ce POST que tu passes par strtolower(). Ton array de grossièretés ne doit donc contenir que des minuscules.
    Sinon, je ne vois qu'une seule solution fiable à 100%, à condition de ne pas avoir des centaines de commentaires. C'est la modération a priori. Est-ce que ce ne serait pas plus simple et plus sûr pour toi ?

  11. #11
    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
    En fait j'y ai pensé mais je veux garder un maximum d'interactivité, donc je modère à postériori.

    Mais comme c'est un système de commentaire sans inscription, assez compliqué puisque l'on peut répondre directement aux commentaires comme dans un forum, et que les nouveaux messages s'affichent sur toutes les pages, je ne veux pas que des mots douteux reste à l'écran pendant que je m'absente.

    En fait je viens de créer un liste de 80 mots dans la base et en les récupérant, je vais les passer en majuscules et au pluriel et puis je vais faire comme dit au dessus.

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    effectivement il vaut mieux tout mettre en majuscule ou minuscule pour comparer.

    Et virer tous les accents

    Ca filtrera ceux ou y a as de faute d'orthographe ....

    Pour soundex, apparement c est plus pour les mots a consonnace anglaise en fait. C'est bien dommage.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    Salut,

    Tu peux remplacer tous les accents par leurs homologues nus (hihi), ça arrangera aussi quelques problèmes.

    Quand à ton "Trou du cul", il est déja inclus dans le "cul" plus haut, il ne sert donc à rien. si tu répètes ça sur beaucoup de mots tu peux écrire 3 mo de texte au lieu de 500 ko nécessaires (et à la main c'est long)

  14. #14
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    1) connard
    2) Connard
    3) COnnard
    4) coNNArd...
    j'y rajouterais c0nnard avec un zéro et de 129 :o pi tant qu'on y ai un petit connart avec la faute qui va bien, cela fait 130 :o

  15. #15
    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
    Personnelement je doute que le banissement sur l'ip soit très pertinent. Il n'est pas rare que plusieurs utilisateurs partagent la même ip. (Parce qu'ils sont dans la même entreprise par exemple)

  16. #16
    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
    Oui j'hésite un peu pour le bannissement de l'IP quoi que cela me tente, c'est bien radical. Sinon je remplace juste les mots indésirables par *** mais là des petits malins vont s'amuser à faire des essaies jusqu'à ce que ça passe.
    Pour ceux qui ont la même IP, tant pis, cela doit être assez rare tout de même et un message précisera que ce n'est peut être pas de leur faute.

    J'ai bien envie aussi de rajouter dans la liste des mots interdits, des balises du genre <script></script> etc...
    Comme cela, même si ces balises sont désactivées par htmlentities, le gars ne peut plus rien poster du tout pendant 24H, car je n'affiche plus le bouton de validation du formulaire.

    Sans trop dévier du sujet : quels sont les caractères à bannir, qui sont utilisés par les pirates pour leurs attaques (forme d'insulte particulièrement désobligeante) ?

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Mr N.
    Personnelement je doute que le banissement sur l'ip soit très pertinent. Il n'est pas rare que plusieurs utilisateurs partagent la même ip. (Parce qu'ils sont dans la même entreprise par exemple)
    +1

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par psychoBob
    Sans trop dévier du sujet : quels sont les caractères à bannir, qui sont utilisés par les pirates pour leurs attaques (forme d'insulte particulièrement désobligeante) ?
    Tu as des tutoriels très bien faits sur le sujet :
    http://bob.developpez.com/phpauth/
    http://thierrylhomme.developpez.com/php/php_secure/

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/07/2008, 16h44
  2. Réponses: 7
    Dernier message: 06/06/2007, 14h42
  3. Réponses: 4
    Dernier message: 27/07/2006, 16h47
  4. Réponses: 10
    Dernier message: 10/05/2006, 10h23
  5. Réponses: 26
    Dernier message: 15/02/2006, 12h35

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