Comment protéger l'arborescence de son site

Résolu
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012 - 21 juil. 2009 à 16:39
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre 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...

16 réponses

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
22 juil. 2009 à 12:07
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
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
22 juil. 2009 à 19:41
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 -
3
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
21 juil. 2009 à 21:20
un htaccess avec un htpassword non ??
Si tu veux vérifier cela sous PHP, tes pages doivent être en PHP.
S.
0
Abdou74100 Messages postés 2 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 01:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
22 juil. 2009 à 09:35
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 ?
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
22 juil. 2009 à 09:43
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
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
22 juil. 2009 à 11:00
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
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
22 juil. 2009 à 13:49
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
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
22 juil. 2009 à 13:56
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.
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
22 juil. 2009 à 17:38
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.
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
22 juil. 2009 à 18:03
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 ?
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
23 juil. 2009 à 07:49
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.
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
23 juil. 2009 à 10:01
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.
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
23 juil. 2009 à 10:05
Bonjour,

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

bonne journée
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
23 juil. 2009 à 10:38
ç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.
0
anthony428 Messages postés 102 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 29 mai 2012
23 juil. 2009 à 10:42
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é.
0
Rejoignez-nous