2009-03-08 37 views

Respuesta

45

Sesiones

Sessions se almacenan por usuario en la memoria (o una alternativa Session-State) en el servidor. Las sesiones usan una cookie (clave de sesión) para vincular al usuario a la sesión. Esto significa que no se almacenan datos "confidenciales" en la cookie en la máquina de los usuarios.

Sessions se usan generalmente para mantener el estado cuando navega por un sitio web. Sin embargo, también se pueden usar para mantener objetos accedidos comúnmente. Solo si el estado de sesión está establecido en InProc, si se establece en otro Session-State mode, el objeto también debe ser serializable.

Session["userName"] = "EvilBoy"; 

if(Session["userName"] != null) 
    lblUserName.Text = Session["userName"].ToString(); 

Galletas

Cookies se almacenan por usuario en la máquina de los usuarios. Una cookie generalmente es solo un poco de información. Las cookies se utilizan generalmente para la configuración de usuario simple preferencias de colores ect. Ninguna información confidencial debe almacenarse en una cookie.

Nunca puede confiar plenamente en que una cookie no ha sido manipulada por un usuario o fuente externa; sin embargo, si la seguridad es una gran preocupación y debe usar cookies, puede encriptarlas o configurarlas para que solo se transmitan sobre SSL. Un usuario puede borrar sus cookies en cualquier momento o no permitir las cookies por completo, por lo que no puede contar con que estén allí simplemente porque un usuario haya visitado su sitio en el pasado.

//add a username Cookie 
Response.Cookies["userName"].Value = "EvilBoy"; 
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10); 
//Can Limit a cookie to a certain Domain 
Response.Cookies["domain"].Domain = "Stackoverflow.com"; 

//request a username cookie 
if(Request.Cookies["userName"] != null) 
    lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value); 

sidenote

Vale la pena mencionar que también es compatible con ASP.NET cookieless-gestión del estado

+1

Además, la sesión se identifica en cada solicitud por una cookie. Sin una cookie (o url idenitfier, malo!) La sesión no se puede rastrear. – DGM

+0

Buena respuesta, pero no me devolvió el voto porque me hizo una pregunta general y su respuesta requiere cierto conocimiento de las plataformas de Microsoft. – TrojanName

+1

@Brian sin embargo ... la pregunta está etiquetada con C# y asp.net para ser justos :-) Todavía las cookies y las sesiones son un tema más general, pero la muestra proporcionada es apropiada para el OP, así que he votado –

10

Una cookie es una cadena identifaction almacenada por un servidor (que tiene un dominio) en el navegador del usuario que visita el servidor/dominio.

Una sesión es una unidad de variables tal como variables, estado, configuraciones mientras un determinado usuario está accediendo a un servidor/dominio en un marco de tiempo específico. Toda la información de la sesión está en el modelo tradicional almacenado en el servidor (!)

Dado que muchos usuarios concurrentes pueden visitar un servidor/dominio al mismo tiempo, el servidor debe ser capaz de distinguir muchas sesiones simultáneas diferentes y asignar siempre el sesión correcta para el usuario correcto. (Y ningún usuario puede "robar" la sesión de otro usuario)

Esto se hace a través de la cookie. La cookie que se almacena en el navegador y que en este caso debe ser una combinación aleatoria como s73jsd74df4fdf (por lo que no se puede adivinar) se envía en cada solicitud del navegador al servidor, y el servidor puede asignar y usar la sesión correcta para sus respuestas (páginas vistas)

La cookie permite que el servidor reconozca el navegador/usuario. La sesión permite que el servidor recuerde información entre diferentes vistas de página.

+1

Sube esto pero ¿por qué wiki de la comunidad? Es una respuesta relacionada con la programación totalmente válida. –

5

Cookie es un almacenamiento del lado del cliente de sus variables. Se almacenó físicamente en la máquina del cliente por el navegador. Su alcance es toda la máquina. Diferentes usuarios en la misma máquina pueden leer la misma cookie.

Debido a esto:

  1. No debe almacenar datos sensibles en la galleta.
  2. No debe almacenar datos que pertenecen a una cuenta de usuario.
  3. La cookie no tiene ningún efecto en los recursos del servidor.
  4. La cookie caduca en la fecha especificada por usted.

La sesión es un almacenamiento del lado del servidor de sus variables. Por defecto, está almacenado en la memoria del servidor. Pero puede configurarlo para almacenar en SqlServer. Su alcance es todo el navegador. El mismo usuario puede ejecutar dos o más navegadores y cada navegador tiene su propia sesión.

Debido a esto:

  1. Puede guardar los datos sensibles en sesión.
  2. No debe guardar todo en sesión. es un desperdicio de recursos del servidor.
  3. Después de que el usuario cierra el navegador, el tiempo de espera de la sesión borra toda la información. (el valor predeterminado es 20 minutos)
2

Es posible tener ambas: una clave principal de la base de datos se almacena en una tabla de búsqueda: el hash se almacena en el cliente como una cookie. Una vez que se envía la cookie hash (hahhahaha :), se busca su clave principal correspondiente, y el resto de los detalles se asocian a ella en otra tabla en la base de datos del servidor.

0
  • La principal diferencia entre las cookies y las sesiones es que las cookies se almacenan en el navegador del usuario y las sesiones no. Esta diferencia determina para qué se usa mejor cada uno.

  • Una cookie puede mantener la información en el navegador del usuario hasta que se elimine. Si una persona tiene un nombre de usuario y contraseña, esto se puede configurar como una cookie en su navegador para que no tenga que volver a iniciar sesión en su sitio web cada vez que lo visite. Puede almacenar casi cualquier cosa en una cookie del navegador.

+0

"Las cookies se almacenan en el navegador del usuario y las sesiones no". ¿Qué hay del objeto global sessionStorage disponible en una página web? –

0

Las sesiones no dependen de que el usuario permita una cookie. En su lugar, funcionan como un token que permite el acceso y la transmisión de información mientras el usuario tiene su navegador abierto. El problema con las sesiones es que cuando cierras tu navegador también pierdes la sesión. Por lo tanto, si tiene un sitio que requiere un inicio de sesión, esto no podría guardarse como una sesión como podría hacerlo como una cookie, y el usuario se vería obligado a volver a iniciar sesión cada vez que visite.

1

La sesión es un objeto del lado del servidor, que transfiere o accede a los datos entre llamadas de la página.
Cookies es un objeto que es la máquina cliente/cliente que almacena cierta información de texto del navegador y el servidor.

0

Parece haber cierta confusión con respecto a lo que es una cookie de sesión.

En primer lugar, cuando hablamos de cookies de sesión, no tiene nada que ver con las sesiones de ASP.Net. Del mismo modo, las cookies de sesión no tienen nada que ver con los procesos del lado del servidor o el almacenamiento en caché.

Una cookie de sesión no es más que una cookie que caduca cuando caduca la sesión del navegador. Para crear una cookie de sesión, no coloque una fecha de caducidad en ella. Al hacerlo, almacena la cookie en la memoria y se desecha cuando se elimina el navegador.

Cuestiones relacionadas