10
votes

Session de régénération

Je pense utiliser ce code sur chaque page pour réduire la possibilité de détournement de la session. En renouvelant la session_id sur chaque demande

if(!empty($_session)){ 
  session_regenerate_id(true);
}


0 commentaires

5 Réponses :


3
votes

Les meilleures pratiques sont d'utiliser SSL (et d'appliquer les défenses habituelles contre d'autres vecteurs d'attaque de sécurité tels que l'injection XSS et SQL). Les identifiants de session de cyclisme mendient simplement pour des conditions de course.


4 commentaires

SSL ne vous protégera pas des biscuits récoltés à travers, disons, XSS.


"Je connais avec SSL, mais je ne veux pas l'acheter de mon webhost


@DMitry - bon marché ou sécurisé, en choisir un.


Eh bien, je développe un forum politique, je vais aller pour l'option bon marché, pourquoi est-ce que je me soucie?



28
votes

appeler session_regenèrent_id sur chaque page est une surcharge inesselle.

Vous ne devez l'appeler qu'au point de connexion ou à tout moment, vous redirigez un utilisateur.

Si vous voulez en outre, vous pouvez stocker la dernière heure régénérée dans une session, puis appeler session_regenèrent_id après 30 minutes, mais il n'y a pas de besoin que cela soit fait pour que cela soit fait sur chaque page.


0 commentaires

2
votes

au lieu de générer des identifiants de session, pourquoi ne pas chiffrer et utiliser l'un déjà généré. Vous pouvez être utilisé et détruit lorsque l'action prévue est terminée.


6 commentaires

Le meilleur cas consiste à régénérer les identiques uniquement. Seulement le point d'entrée (login) uniquement.


comment je fais ça? Comment obtenir l'ID de session .. J'ai une fonction de cryptage qui fonctionne, et je pourrais la déchiffrer. Je ne suis pas préoccupé par la rapidité et la façon de le faire: session_id ($ de la presse); Et puis quand je le déchiffre, comment puis-je enregistrer l'ancien identifiant de session ..? Dans la base de données?


session_start (); session_regenerèrent_id (vrai); $ _Session ['user_session'] = session_id (); $ user_session = $ _ Session ['"user_session']; // Essayez Pass $ user_session for Cryption.vous pouvez l'écho d'abord pour le test


Après utilisation, n'oubliez pas de déséquiper la session non définie (session $ _); vous pourriez également envisager de le détruire si vous n'en avez plus besoin. session_destroy ();


D'accord, je l'ai eu, j'ai besoin de mettre l'identifiant de la session dans la base de données, puis j'ai besoin de chiffrer l'ID de session et de la digue lorsque je souhaite le comparer avec la valeur de la base de données. Est-ce la façon de le faire?


Oui, pouvez-vous faire cela et vous pouvez simplement contenir la session dans les cookies du navigateur telles qu'elles sont. Vérifiez ce site, il pourrait être d'une grande aide Zimuel.it/fr/encypt- PHP-Session-Data



1
votes

Cependant, j'ai entendu des critiques de cette fonction qui disent que si la page est rafraîchie trop rapidement pour une raison quelconque, l'ID de session devient invalide.

Eh bien, je suppose que vous devez l'essayer de confirmer cela, mais je ne pense pas que vous ressentirez jamais ce problème.

Quoi qu'il en soit, la régénération de la session de chaque pageload ne vous assure pas complètement de la session du détournement et utilise des ressources mieux dépensées ailleurs. Un meilleur endroit pour commencer serait regarder SSL. Crypter les données entre le client et le serveur Web est plus sécurisé.

Je ne régénère personnellement qu'un identifiant de session lorsqu'un utilisateur se connecte et lorsqu'un utilisateur se déconnecte de mes applications.


3 commentaires

Pourquoi régénérer la session chaque fois que l'utilisateur se connecte à la page Web


J'aime l'idée que chaque fois que mon utilisateur entre dans ou laisse quelque chose que je limite aux autres, ils commencent une nouvelle session. Je n'ai aucun argument technique sur pourquoi.


Ce n'est pas un problème pour moi - je ne peux pas nier que cela puisse arriver, autant de personnes en prévient, mais je n'ai pas eu l'expérimenté (encore).



7
votes

i avait des problèmes effectivement (à la page Actualiser ou à l'intérieur des demandes d'AJAX), en utilisant session_regenèrent_id (true); sur chaque demande.

mais pas avec session_regenèrent_id ();

donc, selon

renouveler l'identifiant de la session après tout changement de niveau de privilège https://www.owasp.org/index.php/session_managementw_theat_session_id_after_any_privilege_level_change

Régénérer SID sur chaque demande http://en.wikipedia.org/wiki/Session_fixation#Regenerate_SID_on_each_request

J'utilise

  • session_regenèrent_id (); sur chaque demande
  • session_regenerèrent_id (true); sur la connexion, la déconnexion, etc. (tout changement de niveau de privilège)

1 commentaires

N'est pas session_regenèrent_id (false) litière le serveur avec des fichiers de session?