cookies & session

cookie和session的联系和区别

cookie存放于用户浏览器,session存放于服务器内存,两者通常是协调工作

session

  • session是服务端保存的一个数据结构,用来跟踪和用户对话的状态,这个数据可以保存在集群、数据库、文件中

  • session会话时长据服务器设置,一般在二三十分钟左右

cookie

  • cookie是客户端保存用户信息的机制,用来记录用户相关的信息(uid等),也是实现session的一种方式

  • cookie是存储key-value对的一个文件,是由服务器将cookie添加到response里一并返回给客户端,然后客户端会自动把response里的cookie接收下来,并且保存到本地,下次发出请求的时候,就会把cookie附加在request里,服务器在根据request里的cookie遍历搜索是否有与之符合的信息

  • 大多数应用是用cookie来实现session跟踪

  • cookie安全性不如session,如果能够截获某个用户的cookie变量,然后伪造一个数据包发送过去,那么服务器还是认为你是合法的,所以使用 cookie被攻击的可能性比较大

  • 可人为设置 cookie有效时长

使用cookie的前提

  • 不要保存私人信息
  • 任何重要数据,最好通过加密形式来保存数据(最简单的可以用URLEncode,当然也可以用完善的可逆加密方式,最好不要用md5来加密)
  • 是否保存登陆信息,需有用户自行选择
  • 长于10K的数据,不要用到Cookies
  • 不要用Cookies来玩点让客户惊喜的小游戏

cookie和session如何协作?

  • 服务器第一次创建session时,会在cookie里面记录一个jssesionid,以此来为每个用户进行标记

  • 每次HTTP请求,客户端都会发送相应的cookie信息到服务端,由服务器识别用户信息

  • session是用户在服务器配置的单独的储物柜,cookie就是打开这个储物柜的钥匙

  • 新开一个窗口,等于是新开启一个对话,服务器需要通过浏览器的jsessionid来确认是否是之前同一个对话(session)

浏览器禁用cookie咋办?

利用URL重写技术:每次HTTP交互,URL后面都会附加一个sid=XXXXX格式的参数,服务器以此来识别用户(详见jsp章节)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,711评论 1 49
  • 目录Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存...
    Tomatoro阅读 16,998评论 7 186
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 那个比较有名的放羊娃的故事:有人问放羊娃有什么想法?他说,放羊,挣钱,娶媳妇儿。等到他儿子,接着去放羊的时候,别人...
    青杏路涂阅读 150评论 0 2
  • 在星际与星际间 踟蹰 在云层与云层中 徘徊 想你 恋你 却只能凝视远远的远方 寻你 觅你 却只能低头回想 你曾经温...
    云游天下_149a阅读 178评论 0 0