2008-12-10 29 views
27

¿Cuál es la mejor manera de autenticar y rastrear el estado de autenticación de usuario de página a página? Algunos dicen que el estado de la sesión, algunos dicen que las cookies?Estado de autenticación web: ¿sesión vs cookie?

¿Podría simplemente utilizar una variable de sesión que tiene el ID del usuario y, luego de la autenticación, instaurar una clase de usuario personalizada que tenga la información del usuario. Luego, en cada página, verifique que la variable de sesión aún esté activa y acceda a los datos básicos del usuario desde el objeto Usuario.

¿Alguna idea? ¿Algún buen ejemplo?

+0

¿Ha analizado el uso de la autenticación incorporada de formas aspnet?Utiliza cookies, pero es bastante robusto en términos de seguridad y aliviaría mucho trabajo. –

+0

Es bueno, pero necesito verificar algunas otras cosas sobre el usuario desde una base de datos. ¿Puede hacer eso? – Bill

+0

sí, puede almacenar cualquier cosa en los datos del perfil del usuario. si no está seguro de cómo crear su propio sistema de usuario, solo lo haría si las implicaciones de seguridad son bajas – Shawn

Respuesta

16

No hay perfecto manera de hacerlo. Si lo almacena en una cookie, se tomará antiaéreo el robo de cookies. Si lo almacena en la sesión, se tomará una copia porque las sesiones se pueden secuestrar.

Personalmente, tiendo a pensar que una sesión es un poco más confiable porque lo único almacenado en el cliente es una clave de sesión. Los datos reales permanecen en el servidor. Si quieres, juega las cartas un poco más cerca del cofre. Sin embargo, esa es solo mi preferencia, y un buen hacker sería capaz de superar la seguridad de mala calidad, independientemente.

No importa lo que haga, no intente implementarlo usted mismo. Lo entenderás mal. Use el sistema de autenticación provisto por su plataforma específica. También debe asegurarse de tener las precauciones de seguridad adecuadas para proteger el token de autenticación.

+1

que está un poco equivocado, porque las cookies pueden ser secuestradas y la sesión puede ser robada (como suele ser la abstracción sobre las simples)) –

+5

Esto no tiene sentido, porque secuestras una sesión robando una cookie. Entonces es el mismo problema sin importar qué. –

+0

Acabo de leer en algún lado que puedes usar la combinación de ambos. –

1

No sé si es LA MEJOR manera de hacerlo, pero nos sentimos cómodos con la forma en que lo hacemos.

tenemos un objeto de usuario personalizado que instanciamos cuando el usuario se autentica, luego usamos Session para mantener este objeto en la aplicación.

En alguna aplicación lo combinamos con el uso de cookies para extender la sesión de forma continua.

25

El problema con favorecer las sesiones sobre las cookies para 'seguridad' es que las sesiones UTILIZAN las cookies para identificar al usuario, por lo que cualquier problema con las cookies está presente con las sesiones.

Una cosa a tener en cuenta con el uso de Sessions es la ubicación de los datos. Si planea escalar a más de un servidor web en cualquier punto, debe tener mucho cuidado al almacenar grandes cantidades de datos en los objetos de la sesión.

Dado que está utilizando .NET, básicamente tendrá que escribir su propio proveedor de la tienda de sesión para manejar esto, ya que InProc no escalará más allá de 1 servidor, el proveedor de DB es simplemente una mala idea (El punto es para EVITAR las lecturas de DB aquí mientras escala, no agrega más), y el StateServer tiene muchos problemas de capacidad. (En el pasado, he utilizado un proveedor de tienda de sesiones de Memcached con cierto éxito para combatir este problema).

Buscaría las cookies firmadas en google y buscaría utilizarlas en lugar de las cookies o sesiones habituales. Soluciona muchas de las preocupaciones de seguridad y elimina los problemas de localidad con las sesiones. Tenga en cuenta que van y vuelven en cada solicitud, así que guarde los datos con moderación.

+1

Puede tener sesiones sin cookies en cualquier plataforma. .NET también lo ofrece de la caja. –

+0

¿Cómo se distribuye el caché de AppFabric para el almacenamiento de la sesión? –

+9

@esteban Las sesiones sin cookies ponen la ID de la sesión en la URL. Dejo a tu imaginación si esto es más/menos/tan inseguro como usar cookies. –

0

Las cookies y las sesiones en sí mismas no son realmente suficientes. Son herramientas que se usan para rastrear al usuario y lo que hacen, pero realmente debe pensar en utilizar una base de datos para conservar información sobre el usuario que también se puede usar para proteger la aplicación.

-2

Las sesiones son cookies ...

+5

No, no lo son. Solo lea el resto de los comentarios. – serverhorror

+0

@ServerHorror Bueno, son algo así como ... –

Cuestiones relacionadas