Sersessions > class php5 pour gerer les sessions simplement (protection xss)

Soyez le premier à donner votre avis sur cette source.

Vue 8 828 fois - Téléchargée 849 fois

Description

Class en PHP5 qui permet de sécuriser les sessions automatiquement.

Vérifie :
- l'IP
- le nom du navigateur
- le temps de la sessions
- le referer

Un élément pour les paranoïaques permet de régénérer un ID de session a chaque récupération de la session en cours

Source / Exemple :


<?php
require "session.class.php";
// $Session = new session($sessionName, $timeOut, $timeCookie, $cacheLimit,  $idReg, $csrfFix) 
// str $sessionName : Nom du cookie de la session
// int $timeOut : Timeout de la session
// int $timeCookie : Temps du cookie (0 pour session)
// int $cacheLimit : Cache de la session
//				 0 => 'public', 1 => 'private', 2 => 'nocache'
// bool $idReg : Regénère un id de session à chaques appels
// bool $csrFix : Sécurité pour le Cross Site Request Forgeries
$Session = new session();

//écriture dans la session :
$_SESSION['offset'] = "valeur";
// Ou
$Session['offset'] = "valeur";
// Ou
$Session -> offset = "valeur";

//lecture dans la session
echo $_SESSION['offset'];
// Ou
echo $Session['offset'];
// Ou
echo $Session -> offset;

//suppression dans la session
unset($_SESSION['offset']);
// Ou
unset($Session['offset']);
// Ou
unset($Session -> offset);

//vérification avec isset 
isset($_SESSION['offset']);
// Ou
isset($Session['offset']);
// Ou
isset($Session -> offset);

?>

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
22 novembre 2011

Re,

merci déjà pour cette rapidité et ces informations. Et bien justement je suis en pleine refonte de mon système et comme je suis pas développeur de métier mais par envie je m'inspire des code que je vois.
Quant à l'utilisation de session_set_save_handler(), je pense utilisé ça même si je t'avoue je suis un peu perdu quant à son utilisation. A l'occasion si ca te tente de réfléchir avec moi pour un système de session par une base de donnée. Je sais déjà que je vais fonctionné avec une table memory.
Il est vrai qu'un coup de main me serai utile ;-)
En tout cas déjà merci
Messages postés
192
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
3 février 2010

Le nom de la session est en faite le nom du cookie, on peut créé plusieurs sessions et donc avoir un nom différent ...
Le cookie avec une durée de vie de 0 permet au cookie de rester le temps de l'accès au site, normalement, si tu quitte le site et que tu reviens, le cookie ne serra plus là.
Pour les 300 Sec, c'est bien ça, au bout de 300 secondes passer entre 2 actions, la session serra compté comme invalide.
Le CSRF_SECU permet la protection dans le cas ou une session et déjà créé.Le & est un et logique, $A &$B; c'est pareille que $A $A & $B; après si tu ne connais pas la logique, google est ton amis :)
Le session_regenerate_id(false); permet de générer un nouvel identifiant de sessions sans pour autant la supprimer ... ce qui empêche l'usurpation d'ID.

Sinon, si tu veut utiliser une base de donnée pour les sessions, tu va surement te tourner vers session_set_save_handler() ?
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
22 novembre 2011

Bonjour,

perso je trouve ton code vraiment bien. Du moins pour mon niveau.
Enfin je trouve quelqu'un d'aussi parano que moi lol

Par contre j'ai plusieurs questions, désolé cela va te montrer mon petit level mais bon si tu peux y répondre ;-)

-quel est l'intérêt de donner un nom de session ($$sessionName) ?
-tu indiques bien que ton cookie n'a pas de durée de vie ? si oui pourquoi ?
-la session est valide pendant 300 sec d'inactivité c'est bine ça ?
-perso j'ai du mal à comprendre CSRF_SECU sachant que tu indiques s'il est initialisé et que tu viens d'une autre page alors tu initialise $_SESSION[self::REFERER] pour la suite ???
-Excuse mais j'ai jamais vu de truc comme ça $Session_OK &= pourquoi le &=
-dernier bine, j'ai regardé la doc mais je ne vois pas l'intérêt de session_regenerate_id(false);. A true oui mais le mettre à false ?

Voilà je sais ça fait beaucoup de question mais j'essaie de faire mon système qui quant à lui reposerai sur une vérif par rapport à une table. Donc j'aimerai m'inspirer de ce que tu as fait :-)
Voilà merci d'avance à ceux qui peuvent m'aider.
Messages postés
41
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
15 mars 2009

Oui le probleme ce sont les tableaux imbriqués dans la session.
Peut etre peut tu t'inspirer d'une classe que j'ai faite pour un package config.
Cela te permettra de faire
$oSession['truc']['bidule']['etc']
ou
$oSession->truc->bidule->etc

http://files.codes-sources.com/fichier.aspx?id=49214&f=package+config%2fsystem%2fiterator%2fmap_iterator.class.php
Il faudra l'adapter car elle est en php5.3 mais ca peut te donner une base.
Messages postés
192
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
3 février 2010

Voila, c'est fait ...
Et pour ceux que sa n'intéresse pas ; tous les accès au valeurs de la session sont affiché :)
Afficher les 24 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.