Fork me on GitHub

Cookie和Session

注意:所有文章除特别说明外,转载请注明出处.

第十章 深入理解Cookie和Session

[TOC]

Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。

Cookie在传递信息时,随着Cookie个数的增多和访问量的增加,它占用的网络带宽也很大。

Session不容易在多台服务器之间共享。

Cookie可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些Cookie,如果Cookie很多无疑增加客户端与服务器的数据传输量。

10.1.1 Cookie属性项

常用的属性:SetCookie

10.1.2 Cookie工作

10.1.3 Cookie限制

Cookie只是HTTP协议头中的一个字段,虽然HTPP协议本身没有对这个字段有多少限制,但是Cookie最终还是存储在浏览器里,所以不同的浏览器会对Cookie的大小和数量有限制。

10.2 Session

同一客户端每次和服务端交互时,不需要每次都传回所有Cookie值,而是传回一个ID,这个ID时客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。该ID通常是NAME为JSESIONID的一个Cookie。

Session基于Cookie来工作

1. 

10.3 Cookie安全问题

1. Cookie

    Cookie通常情况下是将所有要保存的数据通过HTTP协议的头部从客户端传递到服务器,又从服务端传回客户端,所有的数据都存储在客户端的浏览器中,所以这些Cookie数据都能够被访问到。

2. Session

    Session将数据保存在服务器,所以Session更适合存储用户隐私和重要数据。

10.4 分布式Session框架

10.4.1 Cookie的限制

1. 客户端cookie存储限制 不同浏览器中cookie存储个数的限制

2. cookie管理混乱

    因为如果每个应用系统都有自己管理的应用cookie,将会导致混乱。但由于通常应用系统都在同一个域名下,cookie又有存储限制,所以没有统一管理很容易出现cookie超出限制的混乱。

3. 安全

10.4.2 Session的优势

1. Session配置的统一管理

2. Cookie使用的监控和统一规范管理

3. Session存储的多元化

4. Session配置的动态修改

5. Session加密key的定期修改

6. 充分的容灾机制,保持框架的使用稳定性

...

9. 跨域名Session和cookie如何共享,现在一个网站可能存在多个域名,所以跨域问题需要解决

10.5 Cookie压缩

10.6 表单重复提交问题

能够防止表单重复提交,就需要标识用户的每一个访问请求,使得每一次访问对服务器来说都是唯一确定的。

这里为了标识用户的每次访问请求,可以在用户请求一个表单域时增加一个隐藏表单项,这个表单项的值每次都是唯一的token。

本文标题:Cookie和Session

文章作者:Bangjin-Hu

发布时间:2019年10月15日 - 09:22:26

最后更新:2020年03月30日 - 08:15:26

原始链接:http://bangjinhu.github.io/undefined/第十章 深入理解Cookie和Session/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Bangjin-Hu wechat
欢迎扫码关注微信公众号,订阅我的微信公众号.
坚持原创技术分享,您的支持是我创作的动力.