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é] anti injection sql anti attaque xss : quelles chaines bloq..


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 [Sécurité] anti injection sql anti attaque xss : quelles chaines bloq..
    Bonjour,
    Sur mon système de commentaire j'ai une fonction qui filtre les mots grossiers et bloque l'adresse IP du posteur en cas de détection d'un de ces mots dans son message.
    Cela utilise les expressions rationnelle, exemple :
    '#\bcon\b#i',


    Cela fonctionne bien, je veux maintenant m'en servir pour les tentatives de piratage.

    Bien sur je filtre déjà les commentaires par htmlspecialchars (la fonction de détection des gros mots agit avant la prévisualisation, et si tout se passe bien, lorsque le gars valide là j'ai mysql_real_escape_string).

    Mais je voudrais savoir quelles sont les chaines de caractère à bloquer, non susceptible de se trouver dans un texte classique (sinon tout est supprimé) et qui peuvent servir à pirater : peu importe le type d'attaque, dès qu'il y a une tentative quelle qu'elle soit, l'IP est bloquée 24H, c'est l'intention qui compte.

    Exemple : je peux bloquer 'SELECT', mais encore ?
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    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
    Mon frère est très select.
    Il y a une erreur sur ta page, il me dit 'Error in SELECT ***'
    Please select a category :
    Filiale du premier groupe international de travail temporaire spécialisé,
    Select On line est membre du réseau TELERESOURCES, créé en janvier 1996, déjà présent dans plus de dix pays...
    Bref, tu l'auras compris, tu ne peux filtrer sur une liste noire. 2 raisons à celà :
    1. tu risques de filtrer trop (voir au dessus)
    2. tu risques d'oublier le petit terme caché que peu ou prou connaissent

  3. #3
    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, c'est vrai ce que tu dis et tu soulèves le risque principal (surtout qu'en cas de caractère interdit, tout est effacé, le gars n'a plus qu'à tout réécrire si il a le courage, si il récidive il est bloqué : sévère mais il ne recommencera pas deux fois. Voir ne reviendra pas deux fois, mais bon... je me passerai de lui).

    Ceci dit il y a quand même des caractères qui ne servent presque jamais, donc peut être qu'il est bon de risquer de perdre 1 message tous les 1000 posts si cela permet de mettre out (au moins un peu) le pirate du jour. Pas d'accord ?

    Ou alors je peux entrer des morceaux plus compliqués, dans la fonction de vérification des insultes:
    Qui va entrer 'SELECT id in table' dans un texte normal par exemple ?


    Si c'est valable, quels sont les morceaux de code qui sont inévitablements utilisés pour pirater ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    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 psychoBob
    Qui va entrer 'SELECT id in table' dans un texte normal par exemple ?
    Quelqu'un qui te dit qu'il y a une erreur sql qui apparait sur ton site quand il fait telle action. (voir message 2 de mon précédent post)

    Citation Envoyé par psychoBob
    Si c'est valable, quels sont les morceaux de code qui sont inévitablements utilisés pour pirater ?
    Mais tout caractère classique est susceptible d'ètre utilisé..
    Ex :
    tu veux bannir qui pour avoir tapé un de ces caractères ? Pourtant cette chaine est susceptible de compromettre ton système si tu n'es pas blindé.

  5. #5
    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
    Citation Envoyé par psychoBob
    Si c'est valable, quels sont les morceaux de code qui sont inévitablements utilisés pour pirater ?
    Ça, cher ami, son nous le savions, nous dormirions tous tranquilement la nuit... Ce n'est malheureusement pas toujours le cas !

  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
    Bon alors vous voulez pas répondre. Vous êtes jaloux? vous voulez me pirater ?

    Non je rigole.


    psychoBob a écrit:
    Si c'est valable, quels sont les morceaux de code qui sont inévitablements utilisés pour pirater ?
    Ça, cher ami, son nous le savions, nous dormirions tous tranquilement la nuit... Ce n'est malheureusement pas toujours le cas !
    Pas toujours le cas, mais quand même quelques fois...

    tu veux bannir qui pour avoir tapé un de ces caractères ? Pourtant cette chaine est susceptible de compromettre ton système si tu n'es pas blindé.
    Bien justement, ce système devrait permettre de rajouter une couche de blindage.
    Pour la sécurité j'ai adopté :
    Avant la prévisualisation htmlspecialchars

    Avant l'insertion dans la base, si le message est validé : htmlentities + mysql_real_escape_string(cf d'autres posts).

    ça vous parait blindé ? J'ai lu plein d'astuce de pirate du genre utiliser utf pour coder les messages et passer outre les fonctions ci-dessus, ou pleins de trucs dans le genre.

    Vous en pensez quoi vous ? Je veux rajouter encore du béton là.
    C'est pas parce que j'ai tort que vous avez raison.

  7. #7
    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
    Bah, tu peux toujours voir si PHP peut te convertir tout le message en octal ou en hexa, puis tu fais l'inverse dans ta requête... Non ?
    j/k

  8. #8
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    kirkis si, dans la requête tu remets la chaine convertie à sa valeur d'origine, c'est comme si tu n'avais rien fais

  9. #9
    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
    Hmmm, je me disais que si MySQL se charge de faire la 2º conversion, ce n'est pas tout à fait pareil : la chaîne envoyée par PHP à MySQL est encodée.

  10. #10
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    ah oaui oki j'avais pas vu ça comme ça

    hum peut-être bien alor, mais là aucune idée du comment faire =)

  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
    Sinon pour en revenir au code pirate :

    Vous ne connaissez pas UN elément de code qui soit OBLIGATOIREMENT utilisé dans tout code pirate (requete ou autre) et qu'il suffirait de bloquer pour stopper le pirate ?

    Hein ? les systèmes de défense militaire fonctionnent en bloquant tous le même élément et je n'ai qu'à aller leur demander ? Sérieux ?
    C'est pas parce que j'ai tort que vous avez raison.

  12. #12
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    ouai ptetr, contact marshall (alias) pour savoir, je pense qu'il s'y connait un peu :p

  13. #13
    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 psychoBob
    Hein ? les systèmes de défense militaire fonctionnent en bloquant tous le même élément et je n'ai qu'à aller leur demander ? Sérieux ?
    Tu nous donnes la réponse si jamais

  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
    Bon sinon, comment fait-on pour afficher au visiteur son parcours sur internet avant de venir ?

    J'ai vu ça une fois sur un site de sécurité, il m'avait affiché tout mon parcours sur internet avant d'arriver chez eux et il y avait une liste de plusieurs sites si je me souviens bien.
    C'est pas parce que j'ai tort que vous avez raison.

  15. #15
    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
    J'ai peur que ce site de sécurité ait utilisé une techno client pour afficher tes infos mais qu'il est incapable d'en connaître le contenu lui-même.
    Je m'abstiendrai de donner des exemples car je ne suis pas assez calé mais l'idée serait de prendre un script ou une applet client (qui a donc accès à ton ordinateur) qui t'affiche le contenu de ton historique. À partir de là, le site dont tu parles n'est pas forcément capable de récupérer ces informations mais il peut très bien te les faire afficher dans sa page Web.

    Je ne sais pas si j'ai bien expliqué la nuance...

    Sinon, tu peux toujours consulter l'article de Frédéric Bouchery "Souriez, vous êtes traqués".

  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
    Si si, j'ai bien compris la nuance, je vais jeter un oeil sur l'article dont tu parles (si je le trouve).

    Plus simple alors : phpMyVisit permet de savoir d'où proviennent les visiteurs.

    Savez-vous quelles fonctions ils utilisent ?
    C'est pas parce que j'ai tort que vous avez raison.

  17. #17
    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
    HTTP_REFERER, non fiable car envoyé par le client.

  18. #18
    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
    HTTP_REFERER, non fiable car envoyé par le client.
    Comme phpMyVisit alors ?

    Pourquoi n'est ce pas fiable ? (pour ma culture générale)
    C'est pas parce que j'ai tort que vous avez raison.

  19. #19
    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
    Parce que cela peut se traffiquer très facilement.

  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
    Tout ce qui est envoyé par le client est personnalisable par le client. Il peut t'envoyer ce qu'il veut, s'il sait comment le faire.
    Ton visiteur pourrait par exemple avoir un navigateur fait maison qui n'envoie pas le HTTP_REFERER, ou encore qui envoie autre chose que ce à quoi on s'attend.

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

Discussions similaires

  1. fonction anti injection
    Par jounax dans le forum Langage
    Réponses: 6
    Dernier message: 04/02/2011, 17h16
  2. fonction anti injection sql
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2009, 17h22
  3. Réponses: 4
    Dernier message: 13/02/2006, 11h34
  4. Réponses: 10
    Dernier message: 25/10/2005, 16h09
  5. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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