Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 16h40   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
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.
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 17h29   #2
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
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 : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
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/
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 08/02/2011, 17h47   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
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 :
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
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 18h28   #4
Membre du Club
 
Inscription : mars 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 51
Points : 42
Points : 42
salut papaye0

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

Code :
1
2
 
$validDir = array('/toto/tata', '/titi');
puis valider avec un

Code :
if (in_array($_GET['rep'], $validDir))
christoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 18h38   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
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
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 19h09   #6
Membre du Club
 
Inscription : mars 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 51
Points : 42
Points : 42
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.
christoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 19h25   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
avec une sorte de
Code :
if (in_array($_GET['rep'], != $validDir)) {}
Edit : ça marche pas, car il est pas tapé directement pour accéder a eux mais avec ".."
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 20h50   #8
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
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 :
1
2
3
$in = ('.');
$out = ('/');
$dir_nom = str_replace($in, $out, $dir_nom);
donc voila.

Merci d'avoir pris le temps de m'aider
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 09h48   #9
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
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 : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
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
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 11h46   #10
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 52
Points : 14
Points : 14
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é
papaye0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h00.


 
 
 
 
Partenaires

Hébergement Web