J'ai un site Web qui utilise l'authentification et l'adhésion aux formulaires. Un utilisateur doit avoir des cookies activés pour utiliser le site. Il m'a été demandé de modifier le code afin que l'identifiant de session soit modifié dès qu'un utilisateur se connecte. Cela permettra de le protéger contre une attaque de fixation de session (http://en.wikipedia.org/wiki/Session_fixation). Est-ce que quelqu'un sait comment je peux changer l'identifiant de session sans perdre toute la session? PHP a une méthode spécifique pour le faire mais je ne trouve pas d'équivalent .NET.Comment modifier l'ID de la session après la connexion à ASP.net
Répondre
Here's a blog post qui parle de ceci:
ASP.NET ne prend pas en charge directement fonctionnalité pour régénérer une session ID. Voir la documentation concernant le numéro here. Il est un not-so quick and dirty way pour le faire par en définissant la valeur
ASPNET_SessionID
à la chaîne vide et en redirigeant ainsi que la valeur est régénérée.
J'ai répondu à une question similaire à Generating a new ASP.NET session in the current HTTPContext. Fondamentalement, nous devons modifier une partie de l'état interne de SessionStateModule pour pouvoir régénérer l'ID de session sans perdre d'objets dans la session. J'ai utilisé la réflexion pour définir le champ _rqId sur le nouvel ID et _rqSessionStateNotFound sur true. L'inconvénient est que nous devons accorder une "confiance totale" à l'application.
La [réponse acceptée] (http://stackoverflow.com/a/1419508/295686) fait référence à un article ciblant .NET 1.1 (et ne traite pas réellement de la fixation de la session, mais seulement de l'ancienne réutilisation de l'ID de session), mais La solution était plus élégante et fonctionnait dans notre application .NET 4.5 (un site MVC et un site Web Forms). – mlhDev
C'est une question vraiment vieux je ressuscite, mais voici la solution:
var manager = new SessionIDManager();
bool redirected, isAdded;
manager.SaveSessionID(System.Web.HttpContext.Current,
"5vonjb4mtb1of2fxvhjvkh5d", out redirected, out isAdded);
// sessionId now equals "5vonjb4mtb1of2fxvhjvkh5d"
var sessionId = Session.SessionID;
Je sais, ça fait longtemps. Mais nous avons essayé votre code et ça ne fonctionne pas pour nous. sessionId n'est pas égal à "5vonjb4mtb1of2fxvhjvkh5d". – mosquito87
Je l'ai fait avec succès. sessionid est remplacé par le nouveau sessionid. – pinopino
Cela nous a rapprochés mais pas assez proches - nous y travaillons encore. Cela met à jour l'ID de session et envoie la mise à jour des cookies comme vous le souhaitez, mais nous aimerions quand même utiliser la session pendant cette même requête. Nous ne sommes pas en mesure de faire cela maintenant - apparaît le sac de session est le précédent; la prochaine demande voit le nouveau sac de session mais nos valeurs ne sont pas là. – mlhDev
- 1. La session Django disparaît par intermittence juste après la connexion
- 2. FormsAuthentication après la connexion
- 3. Comment rediriger vers la page de connexion lorsque la session a expiré (ASP.NET 3.5 FormsAuthen)
- 4. Comment modifier la connexion dans EclipseLink
- 5. Comment modifier le délai d'attente de la session JRun?
- 6. Partage de l'état de session ASP.NET avec la session WCF
- 7. Chaîne de connexion dynamique basée sur la variable de session
- 8. Asp.Net MVC et la session
- 9. Comment désactiver la redirection vers la page de connexion dans JBoss, lorsque la session expire?
- 10. Modifier dynamiquement la connexion d'un rapport Crystal
- 11. SMTP à travers ASP.Net 2 Taille de la session Problème
- 12. Comment modifier dans Session DataTable
- 13. Comment insérer dans NHibernate DB après la session NHibernate
- 14. Vérifiez User.Identity.IsAuthenticated dans ActionFilter juste après la connexion
- 15. asp.net mvc état de la session .. aide?
- 16. utilisateur redirigeront à l'URL initialement souhaitée après la connexion
- 17. Paramètres de la session de pool de connexion
- 18. IIS/DirectoryEntry/ASP.NET - Échec de la connexion
- 19. La page Web n'est pas fermée après l'arrêt de la session de débogage
- 20. Authentification et sécurité ASP.NET avec la session
- 21. Liste de magasins à la session
- 22. Comment modifier la structure du référentiel subversion après une migration?
- 23. La session semble ne pas fonctionner asp.net
- 24. VS2008 perd la connexion à la base de données après les mises à jour en ssms2008
- 25. Variable de session Asp.net de la base de données SQL
- 26. Comment obtenir asp.net Valeur de session dans la méthode jquery?
- 27. Comment puis-je configurer une connexion ASP.NET pour permettre à UserName ou UserId d'être récupéré plus tard dans la session?
- 28. La session expire après le téléchargement du fichier
- 29. Visual Studio ASP.NET MVC Enregistrer la fin de la session de la solution?
- 30. ASP.NET MVC - Déployé sur IIS6, arrête le chargement après session
i ASLO pense à ce sujet, mais après Régénérer que, tout l'objet dans l'objet de la session va perdre ... – MemoryLeak
Le L'article de blog auquel vous liez n'est plus disponible. –