Vous n'êtes pas identifié(e).
Pages :: 1
Je viens de créer un espace membre et j'ai pu intégrer les session pour les utilisateurs non authentifier d'accéder à mes pages privés. Le seul hic c'est que si un utilisateur est authentifié il lui est possible de modifier la valeur passée par GET dans Url afin d'afficher le profil d'un autre utilisateur.
Je précise que je me suis servit de GET afin de pouvoir personnaliser les pages propres à chaque utilisateur. Comment empêcher tout utilisateur malveillant et protéger les profils des autres utilisateurs de toute intrusions.
EXEMPLE:
Un utilisateur authentifier est rediriger vers une page "acces.php?id=12" (il bénéficie déjà d'une session qui lui donne accès à tout les pages protégé part session) s'il change le paramètre id dans l'Url à ""acces.php?id=20" il aura accès à une page qui ne lui appartiens pas comment éviter cette situation et protéger les autres users de tout « voyeurisme ». J’avoue que je suis à mes premiers pas à PHP et SQL.
Merci de m'aider à trouver des solutions.
Hors ligne
Je suis newbie, mais j'ai commencé par la sécurisation...
De mon coté, comme j'ai un grand nombre de membre, j'utilise une base de donnée.
Comme ça, sur la page de connection, je demande login et password. Puis je regarde si dans ma base les deux coincident bien.
Si c'est le cas, j'ouvre la cession et pointe vers la suite. Et surtout, je place en $_SESSION le login
Hors ligne
c'est bien ce que j'ai fait mais essai de voir ce qui me permet d'afficher les pages personnaliser de mes membres? c'est là ou se trouve tout mon proble car une fois identifier il possede le droit à sa page et du coup il as aussi le meme droit pour les autre pages et c'est ce que je voudrais pouvoir restreindre. en lui laissant acces qu'a sa seul pas.
Hors ligne
Sur mon site, je n'ai que des pages php.
Et je commence par :
Du coup, je teste que je suis bien connecté.
Hors ligne
oui pareil pour moi
<?php
session_start();
if ((!isset($_SESSION['login'])) || (empty($_SESSION['login']))){
session_destroy();
header('Location: connexion.php');
exit();
}
?>
mais soi sur que si tu as un autre membres qui as l'id=20
et ke je me conncecte avec un id=10 j'aurais la possibilité d'ouvrir la page de id=20 juste parce que cette condition de session est valable pour cette page aussi vue que une session m'a deja ete alloué pendant mon identification. voila un peux mon probleme je ne sais pas on se comprend.
Hors ligne
est-ce que tu utilises un mot de pass pour te connecter ?
si oui, là, tu créés une session.
et tu peux transférer ton login dans un $_SESSION qui va rester mémorisé durant toute ta session.
et de ce que j'en ai compris, le session_destroy() n'est à utiliser qu'au moment de la déconnection. Sinon, ça te détruit ta session et donc tu perds tes variables $_SESSION
l'idée est que sur la page index, tu utilises post pour envoyer le login et par la suite, tu n'utilises que $_SESSION pour rendre invisible les données transférées
Hors ligne
merci en te repondant j'ai eu une autre idée que je vais tester à l'intant je te dirais plus tard si ca marche.
Hors ligne
tout va bien j'ai trouver la soulution,
il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question
<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM transfert
WHERE numcpte_tut = ".$numcpte_tut ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>
porquoi j'ai pas de retour au niveau des info sur print_r
Hors ligne
tout va bien j'ai trouver la soulution,
il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question
<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM users
WHERE login = ".$login ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>
porquoi j'ai pas de retour au niveau des info sur print_r
sorry j'ai manqué certaines modif
Hors ligne
Bonjour,
Tout d'abord je vous invite à vous documenter sur le net sur les architectures MVC, et vous pouvez commencer par ce site.
Ensuite je rappelle amicalement comme il est y fait allusion ici dans ce lien, qu'une URL constitue un espace global applicatif tout comme l'est d'ailleurs le tableau $_SESSION. Le mérite de $_SESSION est qu'il se trouve du côté serveur et donc il n'est pas directement manipulable et accessible par un utilisateur lambda. Mais il ne faut pas oublier que cela reste un espace global.
Ensuite, si la normalisation d'une base de données passe par maintenir et contrôler l'atomicité des données, il n'y a pas de mal à ce qu'elle soit appliquée au sein de l'application toute entière. De plus les informations confidentielles sorties de la bd doivent rester purement techniques, et utiliser un id (clé primaire) d'utilisateur est beaucoup mieux que son login (c'est du texte) et le problème d'unicité peut se poser par définition. Par conséquent le risque qu'un utilisateur se trouve connecté sur le compte d'un autre est grand.
Il faut passer par une classe sérialisée dans l'espace global dont les méthodes de gestion doivent être privées et le rester.
Bonne continuation.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour,
Tout d'abord je vous invite à vous documenter sur le net sur les architectures MVC, et vous pouvez commencer par ce site.
Ensuite je rappelle amicalement comme il est y fait allusion ici dans ce lien, qu'une URL constitue un espace global applicatif tout comme l'est d'ailleurs le tableau $_SESSION. Le mérite de $_SESSION est qu'il se trouve du côté serveur et donc il n'est pas directement manipulable et accessible par un utilisateur lambda. Mais il ne faut pas oublier que cela reste un espace global.Ensuite, si la normalisation d'une base de données passe par maintenir et contrôler l'atomicité des données, il n'y a pas de mal à ce qu'elle soit appliquée au sein de l'application toute entière. De plus les informations confidentielles sorties de la bd doivent rester purement techniques, et utiliser un id (clé primaire) d'utilisateur est beaucoup mieux que son login (c'est du texte) et le problème d'unicité peut se poser par définition. Par conséquent le risque qu'un utilisateur se trouve connecté sur le compte d'un autre est grand.
Il faut passer par une classe sérialisée dans l'espace global dont les méthodes de gestion doivent être privées et le rester.
Bonne continuation.
++
Salut Jc. Si tu n'as pas fait fuir les deux, je te tire mon chapeau. J'ai quand même la nette impression qu'ils sont débutants (sans jugement de valeur). A titre de comparaison, c'est comme si à ta première leçon de conduite alors que tu ne sais pas passer les vitesses seul, le moniteur te parle de régime moteur, de sous-virage,... Tu le regardes avec des grands yeux et ... :-)
Hors ligne
tout va bien j'ai trouver la soulution,
il me suffit d'utiliser la valeur de $_SESSION['login'] et l'associer à une variable afin de sortir tout les infor du membre dont je veux afficher la page. j'ai fai un echo de la variable session qui apparrer mais lorsque que je fait un print de ma requete j'ai pas le resultat du tableau je ne sais pas i il ya un probleme voici mon code de traiement en acceres pour avoirs les information de l'itilisateur en question
<?php
$login= $_SESSION['login'];
echo $login;
include "connectbd.inc.php"; // paramettres de connection à ma base de donné et de selection de tables
$sql= "SELECT *
FROM users
WHERE login = ".$login ;
$requete = mysql_query( $sql ) ;
$resultat = mysql_fetch_assoc($requete);
print_r ($resultat);
?>porquoi j'ai pas de retour au niveau des info sur print_r
sorry j'ai manqué certaines modif
En phase de mise au point je te conseille de debugger des requêtes de la manière suivante :
Ici $login est une chaîne donc en sql elle doit être entre quote :
Par parenthèses, lorsque tu ouvres la connexion pour cet utilisateur tu as dû faire une requête similaire. Profite en pour récupérer d'autres infos plutôt que de refaire une requête !
Pour essayer de ne pas te faire fuir tout de suite, je passe volontairement (dans un premier temps) sur des aspects de sécurités, d'injection sql, ... Les mots y sont quand ton code marchera tu pourra aller te renseigner !!!
Bon courage.
Hors ligne
merci jc pour ton plus(c'est d'ailleurs la solution que j'ai su utiliser en enregistrant la cle primaire en session pour la reutiliser dans la page suivante.) il est vrai que je suis un peu novice mais tout reste une question de logique. kan t'es pas trop bete tu sauras de quoi il en retourne mais je voulais juste signifié à nicolas que si jy etait plus c'est pour la simple raison que j'avais deja trouver tout seul com un grand ma solution. mais je trouve toujours ke le merite reste de demander de l'aide kan on ne connais pas. "celui ki di kil ne sais pas pas n'a pas tord. celui ki dit kil sais n'a pas tord non plus. à tord celui ki di kil sais alors kil n'en sais pas autant kil pense!!!"
****** $requete = mysql_query( $sql ) or die($sql . ' error: '.mysql_error());
le nombre de fois ou j'ai utiliser cette requete dans mon apli tu n'en sais rien alors je trouve plus necessaire de verifier si elle as ete executé ou pas. mais merci kan mm pour ton conseil ;-)
Hors ligne
Rappel aux règles du forum
Surveillez votre orthographe, nous ne vous demandons pas d'être littéraire, mais que votre message soit au moins compréhensible. Évitez à tout prix le style SMS.
Premier et dernier avertissement.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1