cookie认证
简单的讲cookie是服务端发送给客户端、并保存在客户端的,在下次访问该服器时,这个cookie就是彼此识别的凭证。
cookie是保存在本地终端的数据。由服务端设置并生成后,发送给浏览器,浏览器就保存发送过来的cookie,此后并不会因为关闭浏览而丢失cookie,在下次访问同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器就加入了一些限制确保cookie不会被恶意使用,同时不会占据太多的磁盘空间,所以每个域的cookie数量是有限的。
cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:“\”)、失效时间等。
session认证
session是保存在服务端的经过加密存储用户的属性及配置信息。当我们打开浏览器访问某网页时,session就建立,只要浏览器不关闭(也有时间限制,可以自己设置超时时间),这个网站就可以记录用户的状态,当浏览器关闭时,session结束。
session利用cookie建立会话过程 1、客户端第一次请求网站时,服务端生成session并生成了session id来唯一标识这个session,并发送给客户端浏览器 2、浏览器再次请求时将session id放在请求的cookie中一并发送到服务器,服务器从请求中提取出session id,通过对比找到这个用户对应的session,从而得知该用户的登录信息。一般session id有时间限制,超时后会被销毁,默认30分钟 3、用户在应用程序的web页面间跳转时,也是一次会话期间,只要浏览器不关闭,session id不变。session id除了可保存在cookie中之外,还可以保存在url中,作为一个请求的参数(sid)
token认证
token是服务端向客户端第一次发送请求后,服务端利用登录成功后的凭证做数字签证,加密后得到token发送给浏览器。浏览就保存该token,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。后面再次访问时,将token放到cookie中或url中发送给服务器,服务器提取浏览器发送的token值,做解密和签名认证,拿到凭证并判断合法性。
cookie与sesion的区别
1、cookie存放在客户端,session存放在服务端
2、cookie不安全,任意一个客户端可以仿造一个相同的cookie,达到访问的目的
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 ?? 考虑到减轻服务器性能方面,应当使用cookie
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
5、一般将登录信息等重要的信息,以session形式存放;其他信息以cookie形式存放
session与token的区别
token比session更安全。 Session?是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。所谓Session?认证只是简单的把User?信息存储到Session?里,因为SID?的不可预测性,暂且认为是安全的。这是一种认证手段。?而Token?,如果指的是OAuth Token?或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App?。其目的是让 某App有权利访问 某用户 的信息。这里的?Token是唯一的。不可以转移到其它?App上,也不可以转到其它 用户 上。?转过来说Session?。Session只提供一种简单的认证,即有此?SID,即认为有此?User的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。?所以简单来说,如果你的用户数据可能需要和第三方共享,或者允许第三方调用?API?接口,用?Token?。如果永远只是自己的网站,自己的?App,用什么就无所谓了。
? token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。
|