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 adresse IP en cas de mot grossier 2: le Retour.


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 adresse IP en cas de mot grossier 2: le Retour.
    Bonjour,

    Suite à ce post, j'ai mis en place une fonction sur mon forum, pour bloquer les ip des gens qui postent des messages avec des mots grossiers.
    Cela fonctionne bien, mais il convient d'optimiser la liste des mots à bannir.
    Je m'explique : Pour le moment le motAbannir va l'être si il est écrit comme je viens de l'écrire. Mais si le gars poste motAbannir, ou motAbannirs, ou ,moAbannir etc... donc si il n'y a pas un espace devant et derrière le motAbannir et bien le script ne le détecte pas et le laisse passer comme les analphabètes de Troie.

    Pour le moment, la liste des mots interdit est ainsi faite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $interdit=array(
    '#\bmotAbannir1\b#i',
    '#\bmotAbannir2\b#i',
    );
    Ensuite je remplace les mots à bannir par des * et je compare le message initial avec celui dans lequel se trouve éventuellement des *. Si les deux messages sont différents, c'est donc qu'il y a des * dans le second et par conséquents que des motAbannirs ont été postés :le pc du gars se met à planter et s'éteind automatiquement (bon ok seule l'ip est bloquée, le pc qui brule ça sera pour plus tard, quand je serais un pro).

    Donc bien sur je peux faire une liste qui inclu les , et . et s etc... dans le tableau ci dessous, mais c'est horriblement fastidieux.


    Donc avez-vous une solution, chers confrères, pour résoudre ce modeste problème ?
    (je précise que les accents et triples consonnes sont pris en comptes, le problème vient juste de la ponctuation qui peut entourer les mots et de leur éventuelle forme pluriel)

    Merci d'avance.

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    bloquer l'ip ? mais si le client vient de chez aol et change d'ip a chaque requette (via les proxy d'aol) ça ne marche pas ton truc, et tu vas bannir a tour de bras les proxy se qui va interdire les users qui n'ont rien fait.

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    En ce qui concerne le bloquage d'IP c'est loin d'être efficace, sauf pour les IP fixes...

    Il serait plus judicieux, d'après moi, de détecter et remplacer les gros mots par des dièses par ex:
    merde -> #####

    La seule "difficulté" réside après dans la détection des gros mots.

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Ou interdire les users anonyme en ecriture sur ton forum, et bannir les users qui disent des conneries.

  5. #5
    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
    On s'affole pas les gars, il y a déjà un avertissement et si le gars recommence, l'IP est bloquée 24h seulement. Je ne suis pas un psychopathe.


    La question est donc comme l'a dit DeN de correctement détecter les gros mots, pour l'instant c'est imparfait.

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Pour aller dans le même sens aue -DeN-, peut-être peux-tu t'inspirer du script de censure de certains forums comme phpBB.

  7. #7
    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
    Je ne savais pas qu'il y a un script de censure sur PHPbb (vu le vocabulaire que l'on y trouve parfois...) mais j'ai développé le miens, je me vois très mal tout recommencer. Je veux juste l'améliorer.

  8. #8
    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
    personnellement, j'utilise un systeme maison de detection de messages SMS.

    Lorsqu'un message est detecté comme étant du SMS, il n'est pas supprimé, mais est "marqué SMS".
    Ainsi, il ne s'affiche pas par defaut lors de l'affichage de la page. Un utilisateur qui veux quand meme voir le message doit cliquer pour y avoir acces, apres avoir été averti par un message explicite du contenu SMSesque du message.

    L'avantage de ce systeme c'est que tu peux toi meme marquer ou demarquer un message afin "d'ajuster" ton code de marquage, car il est impossible de prévoir tout les cas.

    Comme ca, je n'ai pas a bloquer l'IP non plus ;o)

  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
    L'id est judicieuse bien que non adaptée à mon cas. Mais c'est tout de même une bonne idée, bravo.


    Je ne voudrais pas être embêtant, mais si on pouvait recadrer le sujet sur ma question...

  10. #10
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Le script de censure de phpbb se base sur une table que l'admin alimente au fur et à mesure.

  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
    J'ai toute une liste dans un tableau php, j'ai pensé aussi le faire en base de donnée mais bon, ça ne change rien.

    Elle est très complète cette liste, mais elle ne prend pas en compte la ponctuation et le pluriel. Donc comment prendre en compte celles-ci avec les expressions régulières par exemple?

  12. #12
    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
    \b ne gère pas la ponctuation ?

  13. #13
    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 SI !

    Je viens de vérifier avec une ',' et ça fonctionne.

    Ne resterais qu'à prendre en considération les pluriels.

    Je vais retester avec d'autres signes de ponctuation.


    J'étais certains que /b signifiait espace.

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Par exemple '#\bmotAbannir1(s|x)?\b#i' ?
    Tu ne pourras pas gérer tous les cas, c'est impossible, je pense que tu as déjè fait une croix dessus.

  15. #15
    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
    Peux-tu m'expliquer ton expression régulière, Kirkis ? (pour laquelle je te remercie déjà).


    Pour ce qui est de prendre en considération tous les cas, bien sur il y a aura des fuites mais j'ai quand même bien prévu la chose il me semble :
    Les consonnes ou voyelles en excès sont éliminés, tous les mots sont passés en minuscule et les accents supprimés avant la comparaison, ma liste comprend les K à la place des c etc...
    Bon bien sur, il y a toujours des surdoués de la langue française mais bon...


    Ne restes plus qu'à passer tout le tableau des mots interdits au pluriel en fait.

  16. #16
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par psychoBob
    Peux-tu m'expliquer ton expression régulières, Kirkis ? (pour laquelle je te remercie déjà).


    Pour ce qui est de prendre en considération tous les cas, bien sur il y a aura des fuites mais j'ai quand même bien prévu la chose il me semble :

    Les consonnes ou voyelles en excès sont éliminés, tous les mots sont passés en minuscule et les accents supprimés avant la comparaison, ma liste comprend les K à la place des c etc...

    Bon bien sur, il y a toujours des surdoués de la langue française mais bon...
    Et via des soundex ? gnere soundex(merde)=soundex(MerDes)

    Ps : désolé pour le vilain mot

  17. #17
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    C'est quoi ça?
    '#\bmotAbannir1(s|x)?\b#i'
    , je connais pas du tout! T'a un lien vers de la doc?

    merci!

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Passer les mots en minuscule et utiliser le modificateur i dans ta regexp me semble redondant.

    Concernant ma proposition, je me bornais à ajouter (s|x)? à la fin de ton mot, ce qui revient à inclure "s" ou "x" s'il y a lieu.

    L'expression ci-dessus matcherait donc "motAbannir1", "motAbannir1s", "motAbannir1x", les variantes majuscules/minuscules et/ou ponctuées, etc.

    [Edit] Pour -DeN- :

  19. #19
    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
    Ta solution semble être la bonne Kirkis, merci.



    Passer les mots en minuscule et utiliser le modificateur i dans ta regexp me semble redondant.
    L'expression ci-dessus matcherait donc "motAbannir1", "motAbannir1s", "motAbannir1x", les variantes majuscules/minuscules et/ou ponctuées, etc.
    j'ai grand besoin d'un cours sur les expressions régulières il me semble...
    Que signifie "i" ? Pourquoi le (s|x) comprend-il aussi les é à è etc... ? Ou du moins qu'est-ce qui dans cette expression régulières fait que les accents sont pris en compte tout seul ?

    Autre question:
    Quel role joue le ? après (s|x)

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Ce n'est pas si complexe, ça te viendra avec le temps :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#\bmot_a_bannir(s|x)?\b#i'
    • \b : délimiteur de mot (+/- caractères non alplhanumériques, je présume)
    • mot_a_bannir : euh, le mot à bannir
    • (s|x)? : un "s" ou un "x" ou aucun des deux
    • \b : pareil qu'au départ
    • i : case insensitive

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Bloquer une adresse IP avec Norton ?
    Par kurtbosh dans le forum Sécurité
    Réponses: 0
    Dernier message: 09/08/2011, 10h47
  2. Postfix : Bloquer une adresse email à l'expédition
    Par furtif1 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 23/08/2010, 18h00
  3. Bloquer une adresse MAC dans le dhcp
    Par Sh4dow49 dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 16/09/2009, 11h38
  4. Réponses: 1
    Dernier message: 18/02/2009, 02h07
  5. Réponses: 17
    Dernier message: 22/01/2006, 09h49

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