Comment protéger l'arborescence de son site [Résolu]

Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
- - Dernière réponse : anthony428
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
- 23 juil. 2009 à 10:42
Bonjour,

Ma configuration :
- Un formulaire html pour s'identifier.
- un script de contrôle d'identification et d'ouverture de sessions avec les droits utilisateurs qui y sont associés. Cela fonctionne mais n'est pas aussi sécurisé que je le souhaiterais.

j'ai créé un dossier par droit accès. Le premier utilisateur 'admin' qui se logge sur l'espace est redirigé vers le dossier /adminv1/index.htm
le second user vers /adminv2/index.htm
Le problème est que si je tape l'url /adminv1/index.htm en étant loggé sur adminv2, je peux afficher le contenu ?!

je ne veux pas que mes utilisateurs puissent se balader d'un espace à un autre sans avoir les droits. Comment protéger cet espace ?

Merci de bien vouloir me donner un coup de pouce car là je sèche...
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
3
Merci
Bonjour,
Je ferais un accès à la base de données sur chaque page pour voir si la personne est autorisée ou pas. et de page en page je transmet l'identifiant du user.


thierry la fronde

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_thierry la fronde
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
21
3
Merci
Salut,

J'ai sans doute ai je loupé quelque chose et tu m'en excuseras ... en fait je ne vois pas où se trouve ton problème, c'est tout simplement une application basique des sessions (puisque toutes tes pages sont maintenant en php).
Il n'y a pas a transmettre quoi que ce soit d'une page à l'autre puisque la session est stockée sur le serveur. Pas besoin non plus de faire de nouveau appel à la DB.


Ton formulaire de login transmet le login / pass à ton script php de validation qui, après contrôle, crée les variables de session, par exemple :

if ([login et pass OK]) {
  $_SESSION['user'] = 'user1';
  header[la page qui va bien];
  exit;
} else { // login incorrect
  // redirection / affichage message erreur, ...
}


Puis, par exemple, pour autoriser l'utilisateur user1 à accéder à une page :
session_start();
if($_SESSION['user'] !== 'user1') {
  // redirection vers la page précédente, d'accueil, message d'erreur ...
}
//contenu de la page




Cordialement,


Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
11
0
Merci
un htaccess avec un htpassword non ??
Si tu veux vérifier cela sous PHP, tes pages doivent être en PHP.
S.
Commenter la réponse de syndrael
Messages postés
2
Date d'inscription
vendredi 25 janvier 2008
Dernière intervention
22 juillet 2009
0
Merci
Bonjour,

Aurais-tu un modèle de htaccess + htpassword ? Car j'avais essayé une fois mais ça m'a bloqué tout le contenu

Cordialement,

Abdou74100
Commenter la réponse de Abdou74100
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
merci de me répondre syndrael mais un htaccess avec un htpassword vont me demander un mot de passe lorsque je voudrais accéder à l'espace sécurisé ? non ?
Cependant, j'ai déjà une page d'identification qui va chercher les infos dans une base de données.

Y a t'il moyen de paramétrer les htaccess et htpassword pour que ceux ci empèchent simplement d'accéder à une page en tapant l'url en manuel.
Par contre s'il s'agit d'une redirection, c'est que l'utilisateur à les droits donc pas de mot de passe htpassword à saisir... Est ce possible comme ça ?
Commenter la réponse de anthony428
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Dernière intervention
20 février 2013
1
0
Merci
Bonjour,

peut etre, en ajoutant un groupe à tes utilisateurs, dans ta table utilisateur un champ groupe_users qui va définir quelle groupe cet utilisateur appartient
aprés c'est juste un test en ouverture de page, s'il a le droit et qu'il fait partie du bon groupe, alors il peut voir la page, sinon redirection (vers la page de login, une page d'erreur, ...)

bonne journée
Commenter la réponse de cs_47
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
J'ai déjà un champ "droit" qui me permet de définir un accès restraint à certain membre, j'arrive à les orienter selon leurs droits par contre, je n'arrive pas à conserver en mémoire la variable de "droit" pour faire un controle sur toutes les pages.

C'est bien ce que tu veux dire. Sur chaque page de l'espace sécurisé je dois faire un controle d'identification ets'il n'a pas les droits nécessaires, je le redirige vers la page de login.

Comment récupérer mes variables de session sur chaque page de l'espace sécurisé ??

Merci
Commenter la réponse de anthony428
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Dernière intervention
20 février 2013
1
0
Merci
re,

oui anthony428, un petit tour vers les sessions
page de login, si l'identification est bonne, login + droit en session et a chaque page après vérification si la session existe et si elle existe vérifier que les droits correspondent bien à la visualisation de la page en cours

il doit y avoir plein d'exemples sur phpcs à ce sujet

bonne journée
Commenter la réponse de cs_47
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
11
0
Merci
Oui je suis d'accord, sauf qu'il veut accéder à des pages HTML !! Donc à moins de modifier son Web server pour interpréter les pages .html, il veut sécuriser du contenu statique. non ? Ai-je faux ?
S.
Commenter la réponse de syndrael
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
Merci de m'apporter des éléments de réponse.
j'ai modifier ma structure pour ne passer que par des fichiers php, cela me semble plus simple.

Du coup, je vais opter pour la solution de thierry la fronde en me connectant à la base de données sur chaque page et en vérifiant les droits avec l'identifiant du User que je transmettrai de page en page.
Commenter la réponse de anthony428
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
J'ai essayer d'appliquer cette solution mais j'ai un petit problème lorsque j'essai de transmettre l'identifiant du user de page en page.

J'ai mon formulaire dans lequel je reçois les login et password.
Un script php de validation. Si mes identifiants sont corrects, je redirige le user vers admin/index.php à l'aide de header("Location: admin/index.php" );

J'arrive à récupérer des variables de pages en page lorsque celles-ci ont été soumises au formulaire à l'aide de la méthode POST mais dans le cas d'une redirection, je ne vois pas comment transmettre les infos.

Des suggestions ?
Commenter la réponse de anthony428
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
11
0
Merci
Tiens j'ai justement une question autour des variables de Session. Avez vous déja utilisé session_write_close ?? Si oui dans quel cas ?
Merci
S.
Commenter la réponse de syndrael
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
Merci pour vos conseils mais je n'arrive pas à récupérer les informations contenus dans mes variables de sessions.

voici mon code de validation d'identification :

<?php
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password']))
{
require("connectBDD.php" );
$pseudo=htmlspecialchars($_POST['login']);
$password=htmlspecialchars($_POST['password']);

$query="SELECT * FROM identification where login='$pseudo'";
$resultat=mysql_query($query, $connection);
$donnees=mysql_fetch_array($resultat);

if($password==$donnees['password'])

{ //si il appartient au groupe adminv1
if($donnees['droit']=="adminv1" )
{
//démarrage d'une session
session_start();

//enregistrement des variables sessions : login, droit,
$_SESSION['login']=$donnees['login'];
$_SESSION['droit']=$donnees['droit'];

//redirection vers l'interface d'administration

header("Location: adminv1/index.php" );
}
//si il appartient au groupe adminv2
else if($donnees['droit']=="adminv2" )
{
//démarrage d'une session
session_start();
//enregistrement des variables sessions
$_SESSION['login']=$donnees['login'];
$_SESSION['droit']=$donnees['droit'];

header("Location: adminv2/index.php");
}

//si il appartient au groupe adminv3
else if($donnees['droit']=="adminv3" )
{
//démarrage d'une session
session_start();
//enregistrement des variables sessions
$_SESSION['login']=$donnees['login'];
$_SESSION['droit']=$donnees['droit'];

header("Location: adminv3/index.php");
}
}
//si mauvais mot de passe
else
{
//affichage d'un message d'erreur
echo "mauvais login ou mot de passe";
//affichage du formulaire d'identification
include("index.htm" );
exit;
}

}
//si les variables sessions n'existent pas ou sont vides
else
{
//affichage message d'erreur
echo "remplissez tous les champs";
//affichage du formulaire d'identification
include("index.htm" );
exit;
}
?> 



Et voici mon code pour la récupération des variables de session et de l'affichage de l'espace sécurisé.
<?php
//echo $_SESSION['login']; //je n'arrive pas à afficher cette variable !!!
if($_SESSION['droit'] !== 'adminv1') {

header("Location: ../index.php" );//page d'identification
echo 'vous n\'avez pas les droits';
}else{
echo "Saisir le formulaire<\a>"; 
}
?> 


Voila, je n'arrive pas à récupérer mes variables de sessions. J'ai besoin de votre aide.
Merci d'avance.
Commenter la réponse de anthony428
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Dernière intervention
20 février 2013
1
0
Merci
Bonjour,

il te manque session_start(); en début des scripts

bonne journée
Commenter la réponse de cs_47
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
ça y est,je viens de trouver mon erreur.
étant donné que j'utilise les sessions pour la première fois, je ne savais pas quel code utiliser.

J'ai tout simplement oublier de mettre
session_start();

sur la page où je récupère les variables de sessions.
Je pensais qu'à partir du moment où la session était ouverte, elle le restait jusqu'à ce qu'on la ferme manuellement.

Enfin, en tout cas, merci beaucoup pour votre aide.
Commenter la réponse de anthony428
Messages postés
102
Date d'inscription
vendredi 18 août 2006
Dernière intervention
29 mai 2012
0
Merci
Pardon, je n'avais pas vu le post précédent...
Merci à 47 et kohntark pour vos précieux conseils.
J'apprécie ce forum et les utilisateurs qui prennent du temps pour aider les autres.
Très sincèrement merci à toute la communauté.
Commenter la réponse de anthony428

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.