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é] Sécurité de connection


Sujet :

Langage PHP

  1. #41
    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
    Que vaut
    Code:
    var_dump(get_magic_quotes_gpc());
    Je ne sais pas, je ne comprend pas la phrase.

    oui. Mais <?php n'a rien avoir avec une injection XSS, puisque c'est sur le serveur que ça va se passer, lors d'un joli eval.
    Que veux-tu dire par "lors d'un joli eval" ?


    Sinon pour le cache, je ne connais de ce mot que son nom.

    Bon : je rajoute mysql_real_escape_string avant l'insertion dans la base, et je garde aussi mon htmlentites parce que pour le moment les données codées dans dans la base ne me pose pas de problème et ça m'évitera de le faire à l'affichage : gain de temps lors de celui-ci (minime vous allez surement me dire) et pas besoin de repasser sur mes scripts que pour cela. L'important c'est la sécurité, les histoires d'utilisation multisupport de la base, ça ne me concerne pas à cette heure et un petit script pourrait vite corriger le tout le cas échéant.

    J'ajoute mysql_real_escape_string et j'ai compris pas mal de trucs, merci.

    C'est laborieux mais sinon ça serait pas intéressant.
    C'est pas parce que j'ai tort que vous avez raison.

  2. #42
    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
    Que vaut
    Code:
    var_dump(get_magic_quotes_gpc());
    Je ne sais pas, je ne comprend pas la phrase.
    Ben tu crée un fichier, tu pose dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    var_dump(get_magic_quotes_gpc());
    ?>
    Et tu me dis ce que ça sort.

    Citation Envoyé par psychoBob
    oui. Mais <?php n'a rien avoir avec une injection XSS, puisque c'est sur le serveur que ça va se passer, lors d'un joli eval.
    Que veux-tu dire par "lors d'un joli eval" ?
    C'est quoi qui te gène, joli ou eval ?
    eval permet d'executer du code php contenu dans une chaine de caractère. Donc si tu permets à des utilisateurs d'executer du code php (<?php), tu comprendra qu'il y a un risque pour le serveur. Si tu n'utilises jamais eval, te protéger contre <?php ne sert à rien à mon avis...

  3. #43
    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
    alors filtré par htmlentities, ça me donne cela une fois dans la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    &lt;?php&lt;br /&gt;
    var_dump(get_magic_quotes_gpc( ));&lt;br /&gt;
    ?&gt;
    Ce qui signifie ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #44
    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
    je te demande pas de rentrer ceci dans ta base, mais d'executer le script !
    Ou alors dans phpinfo, que vaut magic_quotes_gpc ?

  5. #45
    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 bah j'ai rien compris comme je t'ai dit je ne sais pas ce que veut dire ton bout de code, alors exécuter un bout de script avec....

    magic_quote_vpc est à on, je viens de vérifier.

    Justement je regardais la doc nexen où ils disent que si c'est la cas, on peut utiliser stripslashes avant mysql_real_escape_string, pour protéger les données deux fois.
    Mais j'ai rien compris du tout.
    C'est pas parce que j'ai tort que vous avez raison.

  6. #46
    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
    Ceci confirme donc que ton htmlentities n'échappe rien du tout puisque quand tu l'appelles, ta chaine est déjà échappée !
    Fais un test, tu crée un script, puis tu rentre le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
       $var = "L'orient';
       var_dump($var);
       var_dump(htmlentities($var));
    ?>
    Tu verras que le résultat sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string(..) "L'orient" 
    string(..) "L'orient"
    Ce qui veut dire que ton htmlentities n'échappait pas les apostrophes, c'était magic_quotes_gpc qui entrait en jeu.
    Conclusion : tu travailles actuellement dans un environnement que tu crois sécurisé, mais qui ne l'est qu'à moitié. Et c'est doublement traitre car tu étais jusqu'à présent convaincu du contraire

  7. #47
    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
    okkk

    Comme je suis en train de préparer une nouvelle version, je vais corriger tout cela en rajoutant comme j'ai dit mysql_real_escape_string par dessus mon htmlentities.

    Conclusion : tu travailles actuellement dans un environnement que tu crois sécurisé, mais qui ne l'est qu'à moitié. Et c'est doublement traitre car tu étais jusqu'à présent convaincu du contraire
    En effet ça n'était pas sécurisé, du moins mal, mais dire que j'en étais convaincu n'exagérions rien sinon je ne me serais pas intéressé autant à ce post

    En tout cas merci beaucoup, je corrige tout cela !

    Question : magic_quote_gpc activé sur 'on' a t'il justement un rôle sur la sécurité, du fait qu'il échappe les requêtes sql et son activation a t'elle ce but ?
    C'est pas parce que j'ai tort que vous avez raison.

  8. #48
    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
    Question : magic_quote_gpc activé sur 'on' a t'il justement un rôle sur la sécurité, du fait qu'il échappe les requêtes sql et son activation a t'elle ce but ?
    Oui, malheureusement, mysql est impacté à moitié par addslashes (magic_quotes_gpc), donc on ne peut reposer dessus

  9. #49
    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
    Génial, je comprend mieux l'étendue de mon ignorance, merci !

    Je marque résolu.

    Ah non, c'est pas mon post


    Remarque on pourrait continuer : que veux-tu dire par "impacter à moitié"?
    C'est pas parce que j'ai tort que vous avez raison.

  10. #50
    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
    magic_quotes_gpc => addslashes
    mysql => mysql_real_escape_string
    mysql_real_escape_string == addslashes + autres choses

  11. #51
    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
    ça roule.

    Encore merci
    C'est pas parce que j'ai tort que vous avez raison.

  12. #52
    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
    Juste une question pour clôturer le débat. Si on a protégé la base avec mysql_real_escape_string, que se passe-t-il au moment du SELECT ? Les données transmises sont-elles remises dans l'état antérieur par MySql ou les caractères interdits sont-ils encore échappés ?

  13. #53
    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 sais pas si cela répond à ta question, mais après avoir filtré les données avec mysql_real_escape_string, celle ci s'affiche naturellement dans la page, sans avoir besoin de stripslashes alors que les / se trouvent bien dans la base (sur mon site en tout cas, cela fait ça).
    C'est pas parce que j'ai tort que vous avez raison.

  14. #54
    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 vg33
    Juste une question pour clôturer le débat. Si on a protégé la base avec mysql_real_escape_string, que se passe-t-il au moment du SELECT ? Les données transmises sont-elles remises dans l'état antérieur par MySql ou les caractères interdits sont-ils encore échappés ?
    tout dépend du parametre magic_quotes_runtime :
    http://us2.php.net/manual/fr/security.magicquotes.php

    Citation Envoyé par psychoBob
    Je ne sais pas si cela répond à ta question, mais après avoir filtré les données avec mysql_real_escape_string, celle ci s'affiche naturellement dans la page, sans avoir besoin de stripslashes alors que les / se trouvent bien dans la base (sur mon site en tout cas, cela fait ça).
    Et bien justement, ils ne devraient pas s'y trouver ! Dans la base on est censé avoir une chaine naturelle...

  15. #55
    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 mais non, je parle des / qui se trouvent devant les '.
    Si ils ne s'y trouvent pas on est roulé !
    C'est pas parce que j'ai tort que vous avez raison.

  16. #56
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 019
    Points : 1 779
    Points
    1 779
    Par défaut
    je vais peut etre dire une betise mais l'option magic qotes est activés chez pratiquement tout les herbergeurs. Ce qui fait qu'un code pirate envoyé sera considéré comme du texte simple car le magic quote aura rajouté automatiquement les \

  17. #57
    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
    D'après Mister N, ce n'est pas suffisant, cf quelques messages au dessus.
    C'est pas parce que j'ai tort que vous avez raison.

  18. #58
    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 weed
    je vais peut etre dire une betise mais l'option magic qotes est activés chez pratiquement tout les herbergeurs. Ce qui fait qu'un code pirate envoyé sera considéré comme du texte simple car le magic quote aura rajouté automatiquement les \
    "considéré come du texte simple"... pour qui ? pour quoi ? qu'entends tu par "simple" ?

    Citation Envoyé par psychoBob
    D'après Mister N, ce n'est pas suffisant, cf quelques messages au dessus.
    C'est bien. Tu es sur la bonne voie Il manque une précision : "pour mysql ce n'est pas suffisant." En effet chaque moteur sql a ses propres caractères spéciaux. Par exemple, il me semble que sous postgres, un simple addslashes suffit... à confirmer par un expert.

  19. #59
    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
    Encore une question, sur htmlentities cette fois.

    Nous avons dit que de récupérer les données du formulaires et les traiter de cette façon est bon (elle ne sont pas envoyé dans la base celles-ci, on les affiche juste pour la prévisualisation):

    $form=htmlentites($_POST['form']);

    Maintenant je suis obligé d'exécuter une fonction avant de passer le contenu d'une variable par htmlentities (c'est une fonction qui supprime les accents, après htmlentitites, ils sont encodés, ça devient le basard pour la suite de mes scripts).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      $contenuC=$_POST['contenu'];
     $contenuMinuscule=strtolower($contenuC);
     $a = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ";
     $b = "aaaaaaooooooeeeeciiiiuuuuyn";
    $contenuMinuscule= strtr($contenuMinuscule, $a, $b);
    $contenuMinuscule = htmlentities($contenuMinuscule);
    $contenuC = htmlentities($contenuC);
     ;
    Est-il bon d'effectuer une action sur le contenu de la variable $contenuC AVANT que celle-ci n'est été filtrée par htmlentities ?
    C'est pas parce que j'ai tort que vous avez raison.

  20. #60
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    euh.... si tu utilises htmlspecialchars(), cela fait comme htmlentities() sauf que ça ne touche pas aux accents... ça t'éviterait ces conversions non ?
    Google is watching you !

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

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. 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