Empecher d'accéder à un lien sans SESSION

Résolu/Fermé
LaChaux78
Messages postés
410
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
24 novembre 2021
- 11 déc. 2016 à 17:29
LaChaux78
Messages postés
410
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
24 novembre 2021
- 11 déc. 2016 à 19:34
Bonjour,
En fait je voudrais savoir si il est possible d'interdir avec une modificaation d'url d'accéder à une page.
Je m'explique
J'ai une connexion où seul les membres peuvent se connecter avec SESSION. Lorsqu'ils ont ouvert leurs SESSION ils ont acces à des liens. Mais je me suis aperçu que même sans SESSION juste en modifiant l'URL on a acces à cette page, cela m'ennuie il y a rien de secret mais bon.
Voici ma page qui donne acces aux liens. Si je tage dans l'url par exemple "pp_responsables" je suis redirigé sur cette page, alors que seul les membres connecté devraient y avoir acces.
Si vous pouvez me donner quelques piste, je vous remercie.
<?php
    $pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : '';
    $sql = "SELECT * FROM cdc_personnes WHERE pseudo = :pseudo";
    $requete = $bdd->prepare($sql);
    $requete->execute(array('pseudo' => $pseudo));
    $donnees = $requete->fetch();
?>
<h2>Mon espace</h2>

<div id="ProfilMenu" style="width:800px"> 
	<ul>
		<li><b>MENU :</b></li>
        <li> - <a href="./mod_profil.php" rel="nofollow noopener noreferrer" target="_blank">Modifier mon profil</a></li>
        <li> - <a href="./mod_passwd.php" rel="nofollow noopener noreferrer" target="_blank">Modifier mon Mot de passe</a></li>
		<li> - <a href="./pp_anciennete.php" rel="nofollow noopener noreferrer" target="_blank">Ancienneté</a></li>
		<li> - <a href="./pp_responsables.php" rel="nofollow noopener noreferrer" target="_blank">Responsables</a></li>
	</ul>
</div>

4 réponses

yg_be
Messages postés
19316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 mai 2022
1 109
11 déc. 2016 à 18:01
Ton observation est 100% correcte, tu as bien perçu le danger, mais ta conclusion n'est pas correcte.
Tu ne peux pas empêcher quelqu'un de t'envoyer n'importe quel url.
Par contre, tu peux totalement contrôler ce que tu renvoies comme réponse à chaque url.
Je te conseille, dans le PHP de toutes tes pages "confidentielles", de tester si il y a une session ouverte, et, si ce n'est pas le cas, de renvoyer une réponse de ton choix : une page d'erreur, ta page principale, une invitation à entrer en session, ...
C'est de cette façon que tu contrôles que seuls ceux qui ont ouvert leurs SESSION ont accès à tes information. Ce n'est pas l’accès aux liens que tu dois contrôler, c'est l’accès au contenu. Et c'est précisément le concept de sessions qui t'aide à faire cela, parce que tu retrouves les mêmes variables de sessions chaque fois que ton PHP est exécuté par la même session.
Ceci t'aide-t-il?
0
LaChaux78
Messages postés
410
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
24 novembre 2021
33
11 déc. 2016 à 18:40
Bonjour
Merci pour ta réponse
Alors en fait si j'ai bien compris car ce n'est pas certain c'est de mettre par exemple une condition sur le contenu qui doit être lu uniquement si une SESSION est ouverte.
Je pourrai faire du style ça?
Merci
<?php if (isset($_SESSION['idpers']) && $_SESSION['idpers'] != NULL) { ?>
<div id="ProfilMenu" style="width:800px"> 
	<ul>
		<li><b>MENU :</b></li>
        <li> - <a href="./mod_profil.php" rel="nofollow noopener noreferrer" target="_blank">Modifier mon profil</a></li>
        <li> - <a href="./mod_passwd.php" rel="nofollow noopener noreferrer" target="_blank">Modifier mon Mot de passe</a></li>
		<li> - <a href="./pp_anciennete.php" rel="nofollow noopener noreferrer" target="_blank">Ancienneté</a></li>
		<li> - <a href="./pp_responsables.php" rel="nofollow noopener noreferrer" target="_blank">Responsables</a></li>
	</ul>
</div>
<?php 
}else {
redirection page d'accueil
}
 ?>
0
yg_be
Messages postés
19316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 mai 2022
1 109
11 déc. 2016 à 18:52
Ce que tu fais, c'est bien, mais tu dois suivre le même principe dans tes pages mod_profil.php, mod_passwd.php, pp_anciennete.php, pp_responsables.php, bref, toutes tes pages confidentielles : renvoyer à la page d'accueil si pas en session.
Il faut aussi, dans le code PHP de toutes les pages où tu utilises $_SESSION, faire, au début, session_start();
0
LaChaux78
Messages postés
410
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
24 novembre 2021
33
11 déc. 2016 à 18:53
C'est encore moi je crois que j'ai compris je te redis
merci
0
LaChaux78
Messages postés
410
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
24 novembre 2021
33
11 déc. 2016 à 19:34
Ca y est génial et oui en fait je me focalisais sur les liens mais c'étais sur le contenu des pages.
Vraiment merci
Cordialement
0