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

anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 21 juil. 2009 à 16:39 - Dernière réponse : anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention
- 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
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 22 juil. 2009 à 12:07
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

Merci cs_thierry la fronde 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_thierry la fronde
Meilleure réponse
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 22 juil. 2009 à 19:41
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de kohntark
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 21 juil. 2009 à 21:20
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
Abdou74100 2 Messages postés vendredi 25 janvier 2008Date d'inscription 22 juillet 2009 Dernière intervention - 22 juil. 2009 à 01:41
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 22 juil. 2009 à 09:35
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
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 22 juil. 2009 à 09:43
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 22 juil. 2009 à 11:00
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
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 22 juil. 2009 à 13:49
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
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 22 juil. 2009 à 13:56
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 22 juil. 2009 à 17:38
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 22 juil. 2009 à 18:03
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
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 23 juil. 2009 à 07:49
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 23 juil. 2009 à 10:01
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
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 23 juil. 2009 à 10:05
0
Merci
Bonjour,

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

bonne journée
Commenter la réponse de cs_47
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 23 juil. 2009 à 10:38
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
anthony428 102 Messages postés vendredi 18 août 2006Date d'inscription 29 mai 2012 Dernière intervention - 23 juil. 2009 à 10:42
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.