web-dev-qa-db-fra.com

Séance du détournement - ID de session régénérer

La régénération de l'ID de la session sur chaque demande atténue-t-elle que la probabilité d'un détournement d'une session est-elle suffisamment mérite d'être mise en œuvre?

J'imagine la combinaison d'une vérification de Remote_addr vs la Remote_addr stockée dans les variables de session, avec un délai d'inactivité de 30 minutes et un identifiant de session en constante évolution doit atténuer le risque à un niveau acceptable.

De plus, y a-t-il d'autres préoccupations concernant la régénération d'un identifiant de session? Dois-je détruire explicitement la vieille session pour chaque nouvelle régénération?

Enfin, la régénération de l'ID de la session sur chaque demande deviendrait trop besoin de ressources sur un grand déploiement pour justifier les avantages de la sécurité?

17
Purge

J'ai vu des implémentations qui ont essayé cette approche et ont fini de le tirer parce que oui, il peut provoquer des problèmes de ressources et des conditions de course dans des fermes Web. Cela ressemble à une bonne idée au début, mais peut également rendre votre application plus sujette aux attaques de service si le processus de régénération est trop cryptographique intensif. Réponse Il y a pour prégénérer périodiquement les identifiants de session et garder un cache disponible, mais vous devez ensuite gérer le cache de manière sécurisée.

Certaines solutions plus courantes pour sécuriser les variables d'identification de la session sont de

  • utilisez SSL
  • générez uniquement l'identifiant de session authentifié après Connexion réussie sur SSL, sinon vous devenez vulnérable à la fixation de la session.
  • générer des jetons cryptographiquement aléatographiquement et irréguliers
  • expire des identifiants de session fréquemment
  • expire correctement, puis côté serveur sur déconnexion
  • marquez le cookie d'identification de session comme httponly et "sécurisé"
12
Weber