Empecher d'accéder à un lien sans SESSION

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 11 déc. 2016 à 17:29
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 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>
A voir également:

4 réponses

yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
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 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
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 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
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 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
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 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
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