Session et securite
15 messages
• Page 1 sur 1
- malopo
- WRInaute discret

- Messages: 61
- Inscription: 6 Juil 2007
Session et securite
Bonjour,
Existe-t-il une fonction PHP pour signer les actions faites par un utilisateur qui est enregistre (avec session PHP) ?
De plus, peut-on eviter que les variables de session soient modifiees par l'utilisateur ? Ces variables la sont elles sures ?
par exemple j'ai une page
<?php
session_start();
echo $nom;
?>
ou $nom est une variable de session. Si l'utilisateur appelle
mapage.php?nom=julie
il change le resultat de echo $nom !!!
Merci
Existe-t-il une fonction PHP pour signer les actions faites par un utilisateur qui est enregistre (avec session PHP) ?
De plus, peut-on eviter que les variables de session soient modifiees par l'utilisateur ? Ces variables la sont elles sures ?
par exemple j'ai une page
<?php
session_start();
echo $nom;
?>
ou $nom est une variable de session. Si l'utilisateur appelle
mapage.php?nom=julie
il change le resultat de echo $nom !!!
Merci
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
non car il est fortement conseillé de travaillé avec le registrer globals à off
Registrer_globals est désactivé maintenant chez la plupart des hébergeurs
dans ton cas il faut faire pour afficher la variable de sessions
pour afficher le ?nom envoyé en paramètre dans l'url, tu devrais faire un
Ainsi les différentes variables sont étanches les unes par rapport aux autres.
plus d'informations http://fr2.php.net/register_globals
Registrer_globals est désactivé maintenant chez la plupart des hébergeurs
dans ton cas il faut faire pour afficher la variable de sessions
- Code: Tout sélectionner
echo $_SESSION[nom]
pour afficher le ?nom envoyé en paramètre dans l'url, tu devrais faire un
- Code: Tout sélectionner
echo $_GET[nom]
Ainsi les différentes variables sont étanches les unes par rapport aux autres.
plus d'informations http://fr2.php.net/register_globals
- boutdepapier
- WRInaute discret

- Messages: 163
- Inscription: 4 Aoû 2006
Comme dit bozo il faut utiliser les variables de sessions et bien refermer aprés utilisation
ex :
session_start();
$loge = true;
$_SESSION['loge'] = $USER;
session_write_close();
Et là tu auras des variables de sessions correctes. Et si tu veux faire disparaître les traces tu peux détruire cette variable dans certains cas (par exemple une déconnexion).
Ha oui, (à ne pas oublier) la variable SESSION a un timer !
Si cette solution ne te va pas passe par des petits gateaux secs (cookie)...
ex :
session_start();
$loge = true;
$_SESSION['loge'] = $USER;
session_write_close();
Et là tu auras des variables de sessions correctes. Et si tu veux faire disparaître les traces tu peux détruire cette variable dans certains cas (par exemple une déconnexion).
Ha oui, (à ne pas oublier) la variable SESSION a un timer !
Si cette solution ne te va pas passe par des petits gateaux secs (cookie)...
-

e-kiwi - Modérateur

- Messages: 15544
- Inscription: 23 Déc 2003
>> Existe-t-il une fonction PHP pour signer les actions faites par un utilisateur qui est enregistre
non à toi de le coder à chaque action.
>> De plus, peut-on eviter que les variables de session soient modifiees par l'utilisateur ?
un utilisateur ne peut pas modifier de variable de session. dans ton cas c'est une erreur de code. tu dois utiliser $_GET pour les variables dans l url, $_POST pour els variables de formulaire, $_SESSION pour les variables de session, etjuste $ pour les variables que tu crée toi dans ton code.
>> il change le resultat de echo $nom !!!
oui, mais pas $_SESSION['nom'] qui est ta variable de session. apres ton serveur est configuré de manière trop permissive.
non à toi de le coder à chaque action.
>> De plus, peut-on eviter que les variables de session soient modifiees par l'utilisateur ?
un utilisateur ne peut pas modifier de variable de session. dans ton cas c'est une erreur de code. tu dois utiliser $_GET pour les variables dans l url, $_POST pour els variables de formulaire, $_SESSION pour les variables de session, etjuste $ pour les variables que tu crée toi dans ton code.
>> il change le resultat de echo $nom !!!
oui, mais pas $_SESSION['nom'] qui est ta variable de session. apres ton serveur est configuré de manière trop permissive.
- boutdepapier
- WRInaute discret

- Messages: 163
- Inscription: 4 Aoû 2006
Nan nan pas de signature la variable session est différente pour chaque utilisateur !
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
Je pense que tu parles du PHPSESSID
l'id de session
permettant de faire le lien entre un accès utilisateur et sa session en cours
2 possibilités
le mettre dans l'url donc là il est en clair (pas recommander pour le ref)
soit tu le mets dans un cookie et donc il est un peu moins en clair
Donc faut priviliégier la solution cookie qui fait plus pro.
l'id de session
permettant de faire le lien entre un accès utilisateur et sa session en cours
2 possibilités
le mettre dans l'url donc là il est en clair (pas recommander pour le ref)
soit tu le mets dans un cookie et donc il est un peu moins en clair
Donc faut priviliégier la solution cookie qui fait plus pro.
- malopo
- WRInaute discret

- Messages: 61
- Inscription: 6 Juil 2007
Donc PHPSESSID n'est pas ce que je cherche.
Je veux me proteger contre les attaques suivantes:
j'ai par exemple un script
changerville.php?ville=paris qui modifie la ville dans laquelle l'utilisateur est enregistre. Le script verifie que la session de l'utilisateur avant de changer sa ville.
Par contre quelqu'un peut creer un site mechant.com sur lequel il y a par exemple:
<img src="monsite.com/changerville.php?ville=hack" />
et y fait venir des visiteurs loggues de mon site. Resultat, le compte de mes utilisateurs est change sans qu'ils n'aient rien demande.
Il faut donc que je signe l'action... d'ou mon post...
Je veux me proteger contre les attaques suivantes:
j'ai par exemple un script
changerville.php?ville=paris qui modifie la ville dans laquelle l'utilisateur est enregistre. Le script verifie que la session de l'utilisateur avant de changer sa ville.
Par contre quelqu'un peut creer un site mechant.com sur lequel il y a par exemple:
<img src="monsite.com/changerville.php?ville=hack" />
et y fait venir des visiteurs loggues de mon site. Resultat, le compte de mes utilisateurs est change sans qu'ils n'aient rien demande.
Il faut donc que je signe l'action... d'ou mon post...
- boutdepapier
- WRInaute discret

- Messages: 163
- Inscription: 4 Aoû 2006
Bah non tu permets de changer la ville si dans la variable de session il y a bien un connect = true et l'id de l'user dans la variable de session correspond bien à l'id que tu dois modifier.
Je suis clair ?
Je suis clair ?
- boutdepapier
- WRInaute discret

- Messages: 163
- Inscription: 4 Aoû 2006
Pour moi un cookie se modifie pour plus de sécurité il faut utiliser les sessions.
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
malopo a écrit:un utilisateur de mon site qui est en train de naviguer sur mon site (il est connecte) et va sur la page avec le
<img src="..."> renverra un cookie valide!
Oui mais bon tu atteins un peu les limites du système.
Tu peux vérifier le referer de la page pour voir si ton utilisateur est bien sur ton site ou bien mettre le phpsessionid dans l'url pour ce cas.
Des petits malins font ça des fois dans les flux rss, ils mettent une image qui fait une rediction 301 vers la page de déconnexion de google reader par exemple. Du coup tu es déconnecté. Tu y peux rien dans ce cas.
@boutdepapier : c'est pas le problème ici. je pense. on parle juste de stocker l'id de session dans un cookie.
- bozoleclown
- WRInaute impliqué

- Messages: 893
- Inscription: 24 Nov 2005
sinon quand l'utilisateur change de ville
tu peux faire une page intermédiaire
où tu lui demandes "confirmer votre changement de ville OUI/NON ?"
et donc du coup voila une parade pour les appels externes en plus du referer.
tu peux faire une page intermédiaire
où tu lui demandes "confirmer votre changement de ville OUI/NON ?"
et donc du coup voila une parade pour les appels externes en plus du referer.
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google Developer Day 2007 : à Paris et dans 9 autres villes - 27-05-2007
- Référencement : le problème des sessions des pages PHP - 04-08-2008
- Le référencement de pages PHP - 04-08-2008
- Séminaire sur le référencement : ImiTiki - Online 2005 - 18-04-2005
- Formation référencement à Paris du 29 mars au 1er avril 2011 - 12-10-2010
- Google Toolbar v3 : AutoLink, WordTranslator et SpellCheck - 22-02-2005
- Formation Ranking Metrics à Marseille : référencement Google - 09-11-2010
- Vidéos de Matt Cutts sur le référencement Google - 04-08-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
