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 :

faille de sécurité


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut faille de sécurité
    Voila j'ai une page ou je recupere par la methode get le repertoire aue j essaye de lister,
    j' ai tenter de proteger dite moi ce que vous en pensez. Est ce possible de revenir a la racine vu le str_replace ?
    Auquel cas comment proteger ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function listdir($path)
    {
      $real_path = 'images'.$path;
      $real_path = str_replace('../', '', $real_path);
      if (is_dir($real_path))
      {
        liste le repertoire
       }
    }
    listdir($_GET['chemin']);

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Bonjour toams69,

    pourquoi ne l'envoies tu pas par POST ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    car on clique sur lien <a href> ...

  4. #4
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    Et bien tu peux modifier cela

    Au lieu de laisser un lien tu génére des formulaires avec des boutons , voir même des boutons images si l'aspect design est important.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Merci je v essayer tout ca

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par thes32 Voir le message
    Bonjour toams69,

    pourquoi ne l'envoies tu pas par POST ?
    Ce qui ne modifierais aucunement la problématique de départ. A savoir comment s'assurer que le chemin n'est pas bidouiller par l'utilisateur.

    Pour cela, tu pourrais faire un realpath du chemin reçu, et vérifier que celui est bien contenu dans la racine des tes images.

    Je m'explique.
    Si racine = /home/somesite/www/mes_images/
    Si $_GET["chemin"] = ./some_dir/in_my_pictures/
    Alors realpath = /home/somesite/www/mes_images/some_dir/in_my_pictures/

    cependant,
    Si $_GET["chemin"] = ../../../../var/log/
    Alors realpath = /var/log/

    On peut donc faire un test simple de chaîne de caractères pour savoir si racine est contenu dans $_GET["chemin'] à l'endroit attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if( substr($realpath, 0, strlen($racine)) == $racine ){
    echo "ok";
    }else{
    echo "ko";
    }
    Écris à la volée, il mérite d'être vérifié, mais l'idée est là.

    a plus

  7. #7
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    En post au pire on peut utiliser un champ masqué, pas besoin de demander au visiteur le chemin des photos.

    On génère dynamiquement la liste des galleries possibles et hop réglé.

    A moins qu'on puisse modifier un envoie par Post, ca je ne le sais pas.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    En post au pire on peut utiliser un champ masqué, pas besoin de demander au visiteur le chemin des photos.

    On génère dynamiquement la liste des galleries possibles et hop réglé.

    A moins qu'on puisse modifier un envoie par Post, ca je ne le sais pas.
    Tout comme on peut bidouiller les cookies.
    Ni le get ni le post ne sont fiables.
    C'est la seule certitude que tu peux avoir.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    GET et POST ont au final le meme niveau de sécurité.

    Il faut bien comprendre que le formulaire HTML est entierement sur le navigateur du client.
    Celui-ci peut modifier n'importe quoi dedans, y compris les valeurs des champs cachés et renvoyer le tout vers le serveur.

    Par exemple si je propose une liste déroulante limitée a certains éléments à l'utilisateur, je dois vérifier a l'arrivée que l'élément qu'il renvoi fait bien parti de ceux auxquels il doit avoir accès.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    Et bien merci de l'info j'avouerai que je suis un peu ignorant pour le coup.

  11. #11
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par kaymak
    Pour cela, tu pourrais faire un realpath du chemin reçu, et vérifier que celui est bien contenu dans la racine des tes images.
    L'utilisateur peut directement écrire le chemin dans le navigateur...

    Dans ce cas l'utilisation d'un .htacess s'avère nécessaire, ainsi les répertoires sensibles pourront être protégé contre toute tentative de pénetration.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par thes32 Voir le message
    L'utilisateur peut directement écrire le chemin dans le navigateur...

    Dans ce cas l'utilisation d'un .htacess s'avère nécessaire, ainsi les répertoires sensibles pourront être protégé contre toute tentative de pénetration.
    Euh oui...

    M'enfin le htaccess ne répond en rien au problème

    Et puis il existe un monde en dehors de la racine web

Discussions similaires

  1. [AJAX] Existe t'il des failles de sécurité spécifique à Ajax ?
    Par FrontLine dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/02/2008, 02h57
  2. Réponses: 6
    Dernier message: 15/02/2008, 17h21
  3. [QMail] Faille de sécurité
    Par BnA dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 30/11/2006, 12h12

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