我说直到您退出,会话超时或关闭浏览器.但我是对的吗?
我今天接受采访,面试官想知道我是否登录页面并关闭浏览器(没有注销),会话会发生什么.
我说会议将成为孤儿.他说没有 - 因为他们的用户可以通过打开浏览器(仅使用cookie)连接回会话.我告诉他这是一个持久的cookie - 而不是会话cookie.我说如果这是原因,那么就没有什么能阻止用户将[persistent] cookie导出到另一台计算机并在该计算机上启动会话.
起初他说你不能出口饼干,但当我解释如何时,他说他会看,但由于包括2位建筑师在内的很多人想出了这个设计,所以不太可能出错.
Lin*_*ple 13
会话 cookie 是没有过期时间的 cookie。
会话 cookie 的处理因浏览器和浏览器版本而异,但通常没有过期日期的 cookie 会在该浏览器的最后一个实例关闭时被删除(生命周期 = 浏览器的运行时间)。
重要的是,与 cookie 值对应的服务器端会话具有在服务器上定义的完全独立的生命周期。HTTP 是一种无连接协议,因此当您的浏览器未处于事务处理过程中时,服务器端不知道您是否仍在处理事务。Tomcat 发出名为 JSESSIONID 的唯一、固定长度的 cookie,它们链接到服务器上存储的会话数据。在这种情况下,会话过期时间存储在服务器上。ASP base64 对所有会话信息进行编码、加密,并将其写入浏览器中的巨型 cookie,因此不必将该会话数据存储在服务器上。会话过期时间保存在 cookie 中存储的加密数据内。无论哪种方式,都会记录会话何时到期,因此会话生存期不能超过服务器端超时。
您可以在另一个浏览器中设置相同的 cookie,并发送与第一个浏览器发送的相同数据(主要是 cookie),只要尚未达到服务器超时,服务器就会让您访问服务器端会话一样的方法。当人们对您的 cookie 执行此操作时,称为会话劫持。
下面是添加“会话”cookie 的 JavaScript 代码,该 cookie 只是一个未设置“过期”值的 cookie。
document.cookie="COOKIENAME=cookievalue";
Run Code Online (Sandbox Code Playgroud)
下面的 JavaScript 添加了一个具有特定过期时间的 cookie,这意味着浏览器将被指示在该时间之后停止通过传出请求发送 cookie:
document.cookie="COOKIENAME=cookievalue; expires=Fri, 31 Dec 9999 00:00:01 GMT";
Run Code Online (Sandbox Code Playgroud)
发送到服务器的cookie数据不包含过期时间等元数据;服务器只能看到键=值对。过期数据仅供浏览器读取。使用上述任一方法设置 cookie 都会导致浏览器以这种方式将该 cookie 发送到服务器:
Cookie: COOKIENAME=cookievalue
Run Code Online (Sandbox Code Playgroud)
服务器最初设置的 cookie 有或没有过期日期,但它不知道它是否已更改,而且它并不真正关心。设置为下个月过期的 Cookie 与计算机上的会话 Cookie(在浏览器运行到下个月之前一直有效)之间没有功能差异。
小智 5
你是绝对正确的.当浏览器关闭时会删除会话cookie,并在其到期时间结束时删除持久性cookie.如果会话在浏览器关闭后保持活动,则他们的网站必须使用持久性cookie.所有cookie都可以导出到另一台计算机.这是一个众所周知的安全漏洞,可以通过使用SSL来缓解.
| 归档时间: |
|
| 查看次数: |
10417 次 |
| 最近记录: |