J'ai un site Web qui utilise l'authentification des formulaires et l'adhésion. Un utilisateur doit avoir des cookies activés pour utiliser le site. On m'a demandé de changer le code afin que l'ID de session soit modifié dès qu'un utilisateur se connecte. Ceci protégera de manière approchée contre une attaque de fixation de session ( http://fr.wikipedia.org/wiki/session_fixation ). Est-ce que quelqu'un sait comment je peux changer l'ID de la session sans perdre toute la session? PHP a une méthode spécifique pour le faire, mais je ne trouve pas d'équivalent .NET. p>
3 Réponses :
Voici un blog poteau qui en parle: p>
ASP.NET ne supporte pas directement fonctionnalité pour régénérer une session IDENTIFIANT. Voir la documentation concernant Le problème ici . Il y a un pas - donc manière rapide et sale pour le faire par Définition de la valeur code> aspnet_sessionid code> à la chaîne vide et la redirection ainsi que la valeur est régénérée. P> blockQuote>
Je pense aussi à cela, mais après régénérer cela, tout l'objet de l'objet de session perdra ...
Le blog post que vous connaissez le lien n'est plus disponible.
J'ai répondu à une question similaire à générant un Nouvelle session ASP.NET dans l'actuel httpContext . Fondamentalement, nous devons modifier une partie de l'état interne de SessionStaTemodule pour pouvoir régénérer l'ID de la session sans perdre d'objets au cours de la session. J'ai utilisé la réflexion pour définir le champ _rqid sur le nouvel identifiant et _rqsessionStatenotTontonnier à vrai. L'inconvénient est que nous devons accorder une "confiance totale" à l'application. P>
réponse acceptée Références Un article ciblé à .NET 1.1 (et cela ne traite pas réellement de la fixation de la session, seule la vieille session ID RUUUS), mais cette solution était plus élégante et travaillée dans notre application .NET 4.5 (un site MVC et un site Web Web Forms).
C'est une très vieille question que je ressens, mais voici la solution:
Je sais, ça fait quelque temps. Mais nous avons essayé votre code et cela ne fonctionne pas pour nous. SessionID n'est pas égal à "5Vonjb4mtb1of2fxvhjvkh5d".
Je l'ai fait avec succès. SessionID a changé pour la nouvelle sessionID.
Cela nous a rapproché mais pas assez proche - toujours travailler dessus. Cela met à jour l'ID de session et envoyez la mise à jour de la cookie, tout comme vous l'attendez, mais nous aimerions toujours utiliser la session au cours de la même demande. Nous ne sommes pas en mesure de le faire maintenant - apparaît que le sac de session est le précédent; La demande suivante voit le nouveau sac de session mais nos valeurs ne sont pas là.