Le 15/01/2012 10:08, BertrandB a écrit :
>
> la variable de session est transmise par un cookie ou en paramètre
> d'appel. Sur le serveur elle corspond à un fichier dans un réeprtoire
> commun contenant le contenu sérialisé de la variable globale $_SESSION.
> Donc il est théoriquement faisable d'arriver sur la session de quelqu'un
> d'autre en jouant sur le cookie
> une excelente discussion sur le sujet :
>
http://stackoverflow.com/questions/138670/how-unique-is-the-php-session-id
>
> il y est proposé une méthode de protection mais on peut en imaginer
> d'autres
> comme multiplié les faux cookie de session
> changer le sessid à chaque requête
> coupler le cookie de sesion avec un cookie contenant une clé stokée dans
> la varianble de session ... cette clé changeant souvent.
Rebonjour Monsieur
J'ai regardé sur le PHP Manual, la fonction session_regenerate_id($param)
Quand $param vaut true, l'ancienne session est censée être détruite,
mais les données de session sont conservées quand même.
J'ai noté dans les nombreux commentaires, que quand une page protégée
avec cette fonction, est rechargée rapidement, et que le mode de
transmission des sessions est par cookies ( ce que je souhaite ), alors
le navigateur client peut souvent, ne pas updater ses cookies lors de
chaque chargement de page, et ainsi on obtiendrait des résulats
imprévisibles, le plus souvent le visiteur serait déconnecté faussement.
Celà semble m'indiquer, que le seul moyen de sécuriser correctement
une connexion, serait d'associer à un id de session ( sous forme de
cookie ), un autre cookie qui soit une clé aléatoire, mise à jour à
chaque chargement de page. Soit votre troisième recommandation.
Mais, pour implémenter celà, comment, lors d'un chargement d'une
page, savoir, en lisant la valeur de ce cookie, que la valeur est
correcte ? Il faudrait pour celà, avoir la valeur de la clé précédente.
Celà ne nécessiterait-il pas, d'enregistrer à chaque chargement de
page, la valeur de la clé, dans une table MySQL, dont la valeur serait
lue, passée à la moulinette de la fonction pseudo-aléatoire de mise à
jour, le résultat comparé avec le cookie-clé, et succès si les deux
matchent ? Dans ce cas, mise à jour de la nouvelle clé à la place de
l'ancienne clé dans la table MySQL ?
De toute manière, pour qu'il y ait validation de l'authentification à
chaque chargement de page, il faut bien que le navigateur et le serveur,
échangent au moins deux cookies : L'un en lecture vers le serveur, et
l'autre en écriture vers le navigateur ?
A charge pour le navigateur client, de ne pas charger ses pages trop
rapidement, sinon il sera déconnecté ?
Comme je ne sais pas la rapidité complète de la fonction
session_regenerate_id($param), ne pensez-vous pas, que cette deuxième
solution du cookie-clé, est préférable à cette fonction de changement
d'id de session ?
D'autre part, je porte à votre connaissance, le fait qu'il semble
qu'il soit possible de complexifier facilement les valeurs possibles des
identificateurs de session, en mettant les deux instructions suivantes,
en début des scripts php du site, avant les instructions relatives au
sessions :
ini_set("session.entropy_file", "/dev/urandom");
ini_set("session.entropy_length", "512");
Celà aurait pour effet, de supprimer toute possibilité, que deux
identificateurs de session soient identiques, pour deux navigateurs
différents, au même moment.
Merci beaucoup de votre réponse.