Tengo un sitio web que usa autenticación y membresía de formularios. Un usuario debe tener las cookies habilitadas para usar el sitio. Se me ha pedido que cambie el código para que la identificación de la sesión se modifique tan pronto como un usuario inicie sesión. Aparentemente esto protegerá contra un ataque de fijación de sesión (http://en.wikipedia.org/wiki/Session_fixation). ¿Alguien sabe cómo puedo cambiar la identificación de la sesión sin perder toda la sesión? PHP tiene un método específico para hacer esto, pero no puedo encontrar un equivalente .NET.cómo cambiar la identificación de la sesión después de iniciar sesión en asp.net
Respuesta
Here's a blog post que habla de esto:
ASP.NET no admite directamente funcionalidad para regenerar una sesión ID. Consulte la documentación relativa al , el número here. Hay un not-so quick and dirty way para hacerlo por estableciendo el valor
ASPNET_SessionID
en la cadena vacía y redirigiendo así que el valor se regenera.
He respondido una pregunta similar al Generating a new ASP.NET session in the current HTTPContext. Básicamente, debemos cambiar parte del estado interno de SessionStateModule para poder regenerar el ID de sesión sin perder objetos en la sesión. Usé la reflexión para establecer el campo _rqId en la nueva ID y _rqSessionStateNotFound en verdadero. La desventaja es que debemos otorgar "plena confianza" a la aplicación.
La [respuesta aceptada] (http://stackoverflow.com/a/1419508/295686) hace referencia a un artículo dirigido a .NET 1.1 (y en realidad no aborda la fijación de sesión, solo la reutilización de ID de sesión anterior), pero esto la solución era más elegante y funcionaba en nuestra aplicación .NET 4.5 (un sitio MVC y un sitio Web Forms). – mlhDev
Ésta es una pregunta muy viejo que estoy resucitar, pero aquí está la solución:
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;
Lo sé, ha pasado un tiempo. Pero probamos su código y no está funcionando para nosotros. sessionId no es igual a "5vonjb4mtb1of2fxvhjvkh5d". – mosquito87
hice esto con éxito. sessionid cambia al nuevo sessionid. – pinopino
Esto nos acercó más, pero no lo suficientemente cerca, sigue trabajando en ello. Esto actualiza la ID de la sesión y envía la actualización de la cookie tal como se esperaba, pero aún nos gustaría utilizar la sesión durante la misma solicitud. No podemos hacer eso ahora mismo: parece que el maletín de sesión es el anterior; la próxima solicitud ve la nueva bolsa de sesión, pero nuestros valores no están allí. – mlhDev
- 1. ASP.NET MVC cambiar la ruta predeterminada al iniciar/cerrar sesión
- 2. redirección después de iniciar sesión: Web.config
- 3. cómo actualizar la cookie JSESSIONID después de iniciar sesión
- 4. Cómo redirigir a la misma página después de iniciar sesión
- 5. Redirigir la página después de iniciar sesión en Yii framework
- 6. Retiro UncaughtExceptionHandler Excepción después de iniciar sesión
- 7. Atributos de la actualización después de Iniciar sesión Diseñar
- 8. Redirigir después de iniciar sesión con Devise
- 9. httpservletrequest - crear nueva sesión/cambiar sesión Id
- 10. Diseñar redirigir después de iniciar sesión
- 11. ¿Para iniciar sesión o no iniciar sesión?
- 12. cómo iniciar sesión en la máquina ec2?
- 13. Django: redirige a la página anterior después de iniciar sesión
- 14. ¿Cómo encriptar la identificación de la sesión en una cookie?
- 15. No puedo iniciar sesión en el servidor SQL después de cambiar el nombre de la computadora
- 16. ¿Cómo iniciar sesión en el usuario de la sesión en Django?
- 17. Permitir la tecla Entrar para iniciar sesión en asp.net?
- 18. Django iniciar sesión/cerrar sesión
- 19. Sesión vacía en ASP.NET/IIS después de la reconstrucción
- 20. ASP.NET 2.0 JQuery AJAX Iniciar sesión
- 21. Cómo cambiar el límite de tiempo en phpmyadmin (iniciar sesión)
- 22. Cómo iniciar sesión en Gerrit como administrador
- 23. cómo obtener las variables de sesión usando la identificación de la sesión
- 24. Iniciar sesión con Linkedin
- 25. ¿Iniciar sesión en Sinatra?
- 26. iOS: ¿Cómo autenticar a un usuario después de iniciar sesión (para inicio de sesión automático)?
- 27. Android - extracción de cookies después de iniciar sesión en webview
- 28. Iniciar sesión en PostgreSQL - Error de inicio de sesión
- 29. Iniciar sesión en la aplicación DropBox
- 30. ¿Cómo puedo acceder a la información del usuario después de iniciar sesión?
i aslo pensar en esto, pero después de regenerado de eso, todo el objeto en objeto de sesión perderán ... El – MemoryLeak
La publicación de blog a la que vincula ya no está disponible. –