摘要:服务端设置好后,将会通过响应头返回给浏览器。注意是在中发送的,所以之前不能有任何输出。数据存储在客户端,容易被拦截篡改,不安全。数据存放在服务端,安全。当落入第三者时,服务端将无法分辨出是否是合法的请求。
Cookie 起源
作用当初 W3C 在设计 Cookie 时实际上考虑的是为了记录用户在一段时间内访问 Web 应用的行为路径。
由于HTTP 协议是一种无状态协议,当用户的一次访问请求结束后,后端服务器就无法知道下一次来访问的还是不是上次访问的用户。
Cookie 的作用正是在此,由于是同一个客户端发出的请求,每次发出的请求都会带有上一次访问时服务端设置的信息,这样服务端就可以根据之前存入 Cookie 的值来做相应的处理(区分访问的用户等)。
解决了客户端和服务端之间的无状态
通俗地讲就是当一个用户通过 HTTP 协议访问一个服务器的时候,服务器会根据需要设置一些 Cookie 信息(Key/Value 键值对),并给这些数据加上一些限制条件,再以响应头的形式返回给客户端浏览器。在条件符合时这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器。
流程简介当客户端浏览器发送请求时,会根据自身的设置找寻相应条件下的 Cookie 信息并解析。若找到,则设置相应的请求头信息,再发送请求,否则直接发送请求。
服务端设置好 $_COOKIE 后,将会通过响应头返回给浏览器。注意: Cookie 是在 header 中发送的,所以之前不能有任何输出。
缺点每次请求都会携带全部的 Cookie 信息,容易造成不必要的带宽浪费。
每个浏览器对 Cookie 在同一个域名下的个数和每个 Cookie 的总大小(4kb)都有相应的限制。
数据存储在客户端,容易被拦截篡改,不安全。
客户端可以禁用 Cookie,导致功能失效。
难于管理,大型系统里每个应用都会有自己的 Cookie,加上以上的限制,容易出现数据被截取,导致数据丢失。
Session基于以上的缺点, Session 来了。
流程简介服务端(默认设置)接受请求时,先查看 $_COOKIE 中是否存在 name 为 PHPSESSID 的键值对(value 为服务端生成的 SESSION_ID:bebfaf6c745c1a6e5f341baf2178113b)。
若不存在(第一次请求),将会自动生成 SESSION_ID,写入到 $_COOKIE 数组中(name 为 PHPSESSID, value 为 SESSION_ID),然后通过响应头返回给浏览器。
若存在(非第一次请求),则根据 value 值到设置的目录下获取相应的文件,反序列化并写入到 $_SESSION 数组供后续使用。
当服务端进行 $_SESSION 设置时,此 $_SESSION 只会维持在内存中。当脚本执行结束时,将会自动把 $_SESSION 序列化后写入到 SESSION_ID 对应的文件中(创建或覆盖)。
优点只将会话标识符放到 Cookie 里,减少带宽的传输。
可以存储大量的信息,基本没有空间上的限制。
数据存放在服务端,安全。
可以统一集中式管理。
联系SESSION 为了识别会话,需要传输一个唯一的 SESSION_ID 到客户端。一般情况下,都是借助 Cookie 来传递,当然也可以通过其他方式进行传递。
Session 安全延伸以上分析得出, Session 需要通过 SESSION_ID 来识别客户端,这就会导致一个安全隐患。当 SESSION_ID 落入第三者时,服务端将无法分辨出是否是合法的请求。
一个简单的防御措施就是:每次请求时都生成一个新的 SESSION_ID 关联到对应的数据并将老的 SESSION_ID 删除。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22653.html
摘要:的作用就是为了解决协议无状态的缺陷所作的努力。的内容主要包括名字,值,过期时间,路径和域。这种生命期为浏览器会话期的被称为会话。而机制采用的是一种在服务器端保持状态的解决方案。中的有效期默认分钟,也就是说,客户端超过分钟,当前就会失效。 会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段。而会话,就是用户通过浏览器和服务器的一次通话。 为什么要有会话控制? 因...
摘要:服务器检查该,以此来辨认用户状态。五下的相关应用应用在中配置如下配置项用于设置存储方式,默认是,即存储在文件中,该文件位于配置项配置的路径,即。配置项用于设置有效期,默认为分钟。配置项用于配置数据是否加密。 一、cookie的由来 当用户访问某网站时,web服务器会将部分信息保存到本地计算机上,当用户再次关顾该网站时,服务器会去查看用户是否登录过该网站,如果登录过,就会将这些记录在...
摘要:无状态协议无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。是通过客户端保持状态的解决方案。而这次,信息则存放在请求头了。 HTTP无状态协议 HTTP无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方...
摘要:无状态协议无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。是通过客户端保持状态的解决方案。而这次,信息则存放在请求头了。 HTTP无状态协议 HTTP无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方...
阅读 2683·2021-09-26 10:19
阅读 2136·2021-09-24 10:27
阅读 2520·2021-09-01 10:42
阅读 2302·2019-08-29 16:09
阅读 2485·2019-08-29 15:17
阅读 1447·2019-08-29 15:09
阅读 633·2019-08-29 11:14
阅读 2301·2019-08-26 13:25