[PHP] Sécuriser une session

:stuck_out_tongue:

On a vu aux cours cette semaine qu’on pouvais voler une session avec le SID. je le savais déjà mais je ne m’éttais jamais interressé à ça.

seulement on a pas encore vu que sécuriser ça^^

Maintenant je me trouve confronté à un problème de ce type et je me demande si ma technique est suffisante.

Je pensais simplement stocker un cookie avec le SID sur la machine de l’utilisateur. Ainsi si une autre machine essaie de prendre le SID, le cookie ne sera pas présent, je détruit la session et il n’arrivera pas à voler la session.

seulement si des paranos comme Sans-Nom (;)) désactivent les cookies, la session sera détruite à chaque fois… :confused:

comment faire d’autre ?

demandez à google :stuck_out_tongue:

perso au boulot, je ne stock que 3 données “hasher” dans la session :

  • l’IP ayant créer la session
  • le timestamp de création de cette session
  • l’identifiant de l’utilisateur

à chaque page (je dis bien à chaque page), je vérifie que ces infos sont cohérentes : l’IP stocké correspond bien à l’IP de l’utilisateur utilisant la session, que le timestamp n’est pas trop vieux (grâce à un timeout d’inactivité), que l’utilisateur existe bien dans ma base …
ensuite, je vérifie dans ma base si l’utilisateur à les droits d’accès à cette page, et si oui quel droit …

si tout est bon, j’actualise le timestamp avec le time() actuel …

dans tous les autres cas, je détruis la session (destruction du tableau _SESSION avec une boucle + supression du cookie) …

je pense que c’est assez secure … quand je le peux, j’utilise du SSL en plus :wink:
pour les poblèmes de fixations d’ID, tu peux aussi utiliser la fonction session_regenerate_id()

boa il est pas très sympa google [:______]

a quoi ça te sert de les hasher ?
il faut les déhasher pour les lire. pis la personne qui vole la session aura directment accès aux donnée déhashées par le biais de ton script

Edit: arf l’édit quand je répondais.

ouai je pensais ausis à ça mais, c’est le cas souvent, plusieurs personne peuvent avoir la même IP.
par exemple dans les petites entreprises ou les écoles.

dans ce cas tes vérifications ne sont pas suffisantes… :expressionless:

un hash n’est pas “déhashable” …
l’intérêt c’est que, quelqu’un qui peut avoir accès aux serveurs (où sont stockées les fichiers de sessions) ne pourras pas savoir quelle données il doit imiter (adresse IP …) pour voler la session :oui: …
si c’était en “clair”, il aurait cette infos …

Edit : si tu veux “unifier” l’IP, tu peux rajouter un microtime derrière > xxx.xxx.xxx.xxx.microtime … 'fin c’est ce que j’ai dans les données de cookie de session de certains serveurs [:______]

Hum, et en ajoutant des données à la con ™ comme l’user agent, ou encore en essayant de résoudre le nom de machine?

Tu fais comment si l’IP change toutes les minutes ?

WotW> si l’ip change toutes les minutes, ça implique une deco/reco toute les minutes…

Non, pas forcément, j’ai plusieurs utilisateurs de mon forum qui sont sous AOL qui ont une IP qui change variablement entre toutes les 20 secondes et toutes les 4 minutes.

Dans ce cas, tu bannis les utilisateurs d’AOL :wink: si tu cherches un motif, il est simple “Unsupported provider, please change!” :smiley:

Rigole pas, c’est une vraie plaie AOL et ses proxys à la pelle.
Je me souviens avant, j’avais un forum phpBB, y’avais genre 5 utilisateurs simultanée, suffisait que 3 personnes de chez AOL arrive et on passait à 43. :smiley:
Mais bon, j’ai programmé mon propre forum et on n’a plus ce problème maintenant. :sol:

Faut kickbanner AOL ! :slight_smile:

C’est à dire ?

checker l’host et les bannir :smiley: