会话和Cookie之间的区别是什么?在什么情况下应分别使用?
f0ofjuux1#
Sessions按用户存储在服务器上的内存(或替代Session-State)中。会话使用cookie(* session key )将用户与会话联系起来。这意味着用户计算机上的cookie中不会存储"敏感"数据。Sessions通常用于在您浏览网站时维护状态。但是,它们也可用于保存经常访问的对象。 仅当会话状态设置为InProc时,如果设置为另一个Session-State mode,则对象也必须可序列化。*
Session["userName"] = "EvilBoy"; if(Session["userName"] != null) lblUserName.Text = Session["userName"].ToString();
Cookies按用户存储在用户的计算机上。Cookie通常只是一些信息。Cookie通常用于简单的用户设置颜色首选项等。Cookie中不应存储任何敏感信息。您永远不能完全相信cookie没有被用户或外部来源篡改,但是如果安全性是一个很大的问题,您必须使用cookie,那么您可以加密您的cookie或设置它们只通过SSL传输。用户可以在任何时候清除他的cookie或完全不允许cookie,所以您不能指望它们存在,只是因为用户在过去访问过您的网站。
//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["userName"].Domain = "Stackoverflow.com"; //request a username cookie if(Request.Cookies["userName"] != null) lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);
值得一提的是,ASP.NET还支持cookieless状态管理
9jyewag02#
正因如此:1.您不应在cookie上存储敏感数据。1.不应存储属于一个用户帐户的数据。
正因如此:1.可以在会话中保存敏感数据。1.您不应该保存会话中的所有内容。这是对服务器资源的浪费。1.用户关闭浏览器后,会话超时将清除所有信息。(默认值为20分钟)
lsmd5eda3#
Cookie是由服务器(具有域)存储在访问服务器/域的用户的浏览器中的标识字符串。一个会话是一个单位,可能是变量,状态,设置,当某个用户正在访问一个服务器/域在特定的时间框架。所有的会话信息是在传统的模型存储在服务器上(!)因为许多并发用户可以同时访问服务器/域,所以服务器需要能够区分许多不同的并发会话,并且总是将正确的会话分配给正确的用户。(并且没有用户可以“窃取”其他用户的会话)这是通过cookie来实现的。cookie存储在浏览器中,在这种情况下,它应该是一个随机组合,如s73 jsd 74 df 4fdf(所以它不能被猜测),在每次从浏览器到服务器的请求中发送,服务器可以分配和使用正确的会话来回答(页面访问)Cookie允许服务器识别浏览器/用户。会话允许服务器记住不同页面视图之间的信息。
ve7v8dk24#
会话并不依赖于用户是否允许cookie。相反,当用户打开浏览器时,会话就像一个令牌一样允许访问和传递信息。会话的问题是,当你关闭浏览器时,你也会丢失会话。所以,如果你有一个需要登录的网站,它不能像cookie一样保存为会话。并且用户将被迫在每次访问时重新登录。
uelo1irk5#
两者都有可能:散列数据库主键并将其存储在查找表中:然后哈希值作为cookie存储在客户机上,一旦提交了哈希cookie(hahahaha:),就会查找其对应的主键,其余的详细信息则在服务器数据库的另一个表中与之关联。
z5btuh9x6#
du7egjpx7#
会话是一个服务器端对象,它在页面调用之间传递或访问数据。Cookies是客户端/客户机存储浏览器和服务器的一些文本信息的对象。
yb3bgrhw8#
关于什么是会话cookie似乎存在一些混淆。首先,当我们谈论会话cookie时-它与ASP.NET会话无关。同样,会话cookie与服务器端进程或缓存无关。会话cookie只不过是浏览器会话过期时过期的cookie。要创建会话cookie -不要在其上设置过期日期。这样做会将cookie存储在内存中,并在浏览器被处理时被处理。
8条答案
按热度按时间f0ofjuux1#
Sessions按用户存储在服务器上的内存(或替代Session-State)中。会话使用cookie(* session key )将用户与会话联系起来。这意味着用户计算机上的cookie中不会存储"敏感"数据。
Sessions通常用于在您浏览网站时维护状态。但是,它们也可用于保存经常访问的对象。 仅当会话状态设置为InProc时,如果设置为另一个Session-State mode,则对象也必须可序列化。*
Cookies按用户存储在用户的计算机上。Cookie通常只是一些信息。Cookie通常用于简单的用户设置颜色首选项等。Cookie中不应存储任何敏感信息。
您永远不能完全相信cookie没有被用户或外部来源篡改,但是如果安全性是一个很大的问题,您必须使用cookie,那么您可以加密您的cookie或设置它们只通过SSL传输。用户可以在任何时候清除他的cookie或完全不允许cookie,所以您不能指望它们存在,只是因为用户在过去访问过您的网站。
值得一提的是,ASP.NET还支持cookieless状态管理
9jyewag02#
正因如此:
1.您不应在cookie上存储敏感数据。
1.不应存储属于一个用户帐户的数据。
正因如此:
1.可以在会话中保存敏感数据。
1.您不应该保存会话中的所有内容。这是对服务器资源的浪费。
1.用户关闭浏览器后,会话超时将清除所有信息。(默认值为20分钟)
lsmd5eda3#
Cookie是由服务器(具有域)存储在访问服务器/域的用户的浏览器中的标识字符串。
一个会话是一个单位,可能是变量,状态,设置,当某个用户正在访问一个服务器/域在特定的时间框架。所有的会话信息是在传统的模型存储在服务器上(!)
因为许多并发用户可以同时访问服务器/域,所以服务器需要能够区分许多不同的并发会话,并且总是将正确的会话分配给正确的用户。(并且没有用户可以“窃取”其他用户的会话)
这是通过cookie来实现的。cookie存储在浏览器中,在这种情况下,它应该是一个随机组合,如s73 jsd 74 df 4fdf(所以它不能被猜测),在每次从浏览器到服务器的请求中发送,服务器可以分配和使用正确的会话来回答(页面访问)
Cookie允许服务器识别浏览器/用户。会话允许服务器记住不同页面视图之间的信息。
ve7v8dk24#
会话并不依赖于用户是否允许cookie。相反,当用户打开浏览器时,会话就像一个令牌一样允许访问和传递信息。会话的问题是,当你关闭浏览器时,你也会丢失会话。所以,如果你有一个需要登录的网站,它不能像cookie一样保存为会话。并且用户将被迫在每次访问时重新登录。
uelo1irk5#
两者都有可能:散列数据库主键并将其存储在查找表中:然后哈希值作为cookie存储在客户机上,一旦提交了哈希cookie(hahahaha:),就会查找其对应的主键,其余的详细信息则在服务器数据库的另一个表中与之关联。
z5btuh9x6#
du7egjpx7#
会话是一个服务器端对象,它在页面调用之间传递或访问数据。
Cookies是客户端/客户机存储浏览器和服务器的一些文本信息的对象。
yb3bgrhw8#
关于什么是会话cookie似乎存在一些混淆。
首先,当我们谈论会话cookie时-它与ASP.NET会话无关。同样,会话cookie与服务器端进程或缓存无关。
会话cookie只不过是浏览器会话过期时过期的cookie。要创建会话cookie -不要在其上设置过期日期。这样做会将cookie存储在内存中,并在浏览器被处理时被处理。