为什么要用Session和Cookie?
- 因为 Session 和 Cookie 可以记录用户状态信息
- 其实说到底,cookie、session、token 都围绕了一个点:身份认证。
为什么要认证
- 一个需要登录的动态网站,在登录后需要保持登录状态,以便后续访问网站其他网页
HTTP是无状态协议
- 已经登录过的用户没法通过协议层把状态保存下来,所以下次再请求的时候,服务器还是不知道你是谁。
无状态导致的后果?
- 意味着后续发出的请求需要处理前面请求的响应,则必须重传
Session
- 当服务器收到登录请求之后,生成一个 session id 一起返回给客户端,客户端下次再请求的时候把 session id 一起带上。这时候每个客户端请求对应各自的 session id ,服务就知道怎么区分了。
Cookie
- 而客户端与服务器之间的会话,一般会使用 Cookie 来管理。
- 服务在向客户端返回响应时,会在首部字段Set-Cookie内写入 Session ID(如 PHPSESSID=028a8c…)。
- 客户端接收到从服务器端发来的 Session ID 后,会将其作为 Cookie 保存在本地。
产生的问题
- 由于服务器也要保存这 session信息用于跟客户端传过来的进行比对,数量小了还好,请数量大了,服务器要保存的内容页就越多,会吃不消。
- session认证本质基于cookie,所以如果cookie被截获,用户很容易收到跨站请求伪造攻击。并且如果浏览器禁用了cookie,这种方式也会失效
Token
- 服务端可以不用保存 token。
- 当第一次收到客户端传过来的用户名和密码时,服务器认证通过后,通过加密算法生成一个字符串当做 token。当拿到后续请求中的 token,服务器再解析这个token,可以从中获取关键的信息,从而判断该token的有效性。
优点:
- 无状态,可以更方便扩展
- 更安全,可以防止跨站请求伪造 CSRF
- 方便多平台跨域
- 可以标准化,比如基于JWT Json web token (JWT)
原文地址:http://www.cnblogs.com/QingshanY/p/16793444.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性