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écuriser un get


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut sécuriser un get
    Bonjour a tous, je sais que ce sujet est largement abordé mais j'ai bien du mal a comprendre.
    Alors voila dans mon url j'indique de dossier dans le quel mon script doit s’exécuter, et j'utilise donc dans ma page GET afin de récupérer cette indication.
    Le problème est que l'on peut accéder a la racine de mon serveur en modifiant l'url du coup. Je voudrais donc la sécuriser, mais mes tentatives son vaines

    Voulez vous bien m'aider ?
    Merci.

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Tu peut utiliser la fonction htmlspecialchars
    Regarde aussi ce lien y'a pas mal d'infos intéressantes sur la sécurité : http://thierrylhomme.developpez.com/php/php_secure/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Merci de ta raiponce rapide, mais mon url est présenté comme ça
    index.php?rep=./toto/tata/
    donc si une personne fait ça
    index.php?rep=/
    toute la racine de mon serveur est affiché
    je ne vois pas comment utiliser htmlspecialchars pour parer a ça
    où sinon une autre approche pour passer de fichier en fichier sans changer de page php ?

    Ps : je ne suis pas bon du tout en php, je me limite normalement au coté graphique

    EDIT : J'ai trouvé une parade
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dir_r = $_GET["rep"];   
    $dir_nom = "doc_n/".$dir_r
    donc par def c'est "doc_n" sur le quel pointe mon script et du coup tout les liens qui passe par ma variable 'rep=' ont comme racine "doc_n"
    et j'ai fais un htmlentities tout de même, merci beaucoup.

    Comme je suis persuadé que c'est pas comme ça que l'on code proprement vous pouvez me conseiller je suis toujours a l'écoute de conseille hein

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    salut papaye0

    tu pourrais lister les répertoires "valides" dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $validDir = array('/toto/tata', '/titi');
    puis valider avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (in_array($_GET['rep'], $validDir))

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Effectivement, mais il y a énormément de répertoires et sous répertoires, il faudrait créer un autre script qui les liste, ce qui ralentirait l’exécution de la page et si jamais c'est un script occasionnel qui stockerait la liste genre dans un txt il y a trop de changement de répertoires en une même journée
    Mais je garde l'idée, je n'y avais même pas pensé

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    Tu peux peut-être alors stocker la liste les répertoires interdits...

    S'il s'agit uniquement de sous-répertoires de /doc_n/ alors ta solution me parait convenable.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    avec une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (in_array($_GET['rep'], != $validDir)) {}
    Edit : ça marche pas, car il est pas tapé directement pour accéder a eux mais avec ".."

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Bon c'est une triste nouvelle mais ma parade ne fonctionne pas totalement son l'on ajoute ".." on remonte toujours
    j'ai bien tenté d'interdire l'utilisation de ".." ou l’accès au répertoire parents avec != mais sa me fige tout, je crois que je ne parviens pas a jouter ce bout de code correctement ...........

    EDIT :

    Je tente une autre approche avec un if ...
    pour le moment ça marche bien ".." renvoi a une page vierge pour l'instant,
    mais si jamais c'est incrusté comme ça "index.php?rep=/8/../../.." retour a la racine du serveur
    il y a pas une solution pour que si jamais il y est de présent dans l'url ".." sa active mon if ?

    EDIT 2 :

    Bon alors sur ce coup là j'ai trouvé, c'est en regardent le code d'un texte que j'ai eu cette idée a la con
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $in = ('.');
    $out = ('/');
    $dir_nom = str_replace($in, $out, $dir_nom);
    donc voila.

    Merci d'avoir pris le temps de m'aider

  9. #9
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par christoff Voir le message
    Tu peux peut-être alors stocker la liste les répertoires interdits...

    S'il s'agit uniquement de sous-répertoires de /doc_n/ alors ta solution me parait convenable.
    Il vaut mieux éviter les listes noires et privilégier les listes blanches, car il est souvent difficile de penser à tous les cas à interdire

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par amoiraud Voir le message
    Il vaut mieux éviter les listes noires et privilégier les listes blanches, car il est souvent difficile de penser à tous les cas à interdire
    Effectivement, on sait jamais. Merci du temps passé

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

Discussions similaires

  1. Sécuriser GET et POST
    Par infiniti dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2008, 19h41
  2. Réponses: 4
    Dernier message: 13/09/2008, 19h15
  3. [Sécurité] Sécuriser les GET dans un formulaire
    Par s-c-a-r-a dans le forum Langage
    Réponses: 8
    Dernier message: 29/09/2007, 11h27
  4. Authentification Sécurisée
    Par HPJ dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/06/2003, 11h45
  5. Sécuriser les Métadata IB en utilisation mono ?
    Par ADN75018 dans le forum Débuter
    Réponses: 23
    Dernier message: 31/01/2003, 14h43

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