Session et securite

WRInaute discret
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
 
WRInaute impliqué
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
Code:
echo $_SESSION[nom]

pour afficher le ?nom envoyé en paramètre dans l'url, tu devrais faire un
Code:
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
 
WRInaute discret
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)...
 
WRInaute accro
>> 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.
 
WRInaute discret
Il faut donc coder la signature soi meme...

Y a-t-il une pratique recommandee pour cette signature ?

par exemple un md5(identifiant du visiteur + secret connu de personne) ?
 
WRInaute discret
D'ailleurs est-il vraiment utile de donner une signature different pour chaque action ?
Ou est-ce que c'est toujours sur de donner une seule signature a un utilisateur pour toutes ses actions?
 
WRInaute impliqué
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.
 
WRInaute discret
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...
 
WRInaute discret
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 ?
 
WRInaute discret
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!
 
WRInaute impliqué
malopo a dit:
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.
 
WRInaute impliqué
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.
 
Discussions similaires
Haut