能够存储的数据结构到底有哪些?

浏览器端:cookie,WebStorage(localStorage,sessionStorage),userData,indexedDB

服务器端 : session

什么是cookie?它存放在哪?

维基上给出的解释是:Cookie(复数形态Cookies),又称为“小甜饼”。类型为“小型文本文件”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)

其他得解释大同小异,cookie 就是浏览器储存在用户电脑上的一小段文本文件。一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个 cookie,只要这个 cookie 存在并可以,用户就可以自由浏览这个网站的任意页面。再次说明,cookie 只包含数据,就其本身而言并不有害

由上所述,Cookie应该是存放在客户端的

cookie和session的关系?

  • cookie是客户端存放着,是为了方便记录特定用户一些特定操作而存在的;而session是在服务器端的,是一种保存上下文机制,针对的每一个用户
  • session中保存的是对象,cookie中保存的是字符串。 
  • session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
  • session需要借助cookie才能正常工作,就是说session是依托于cookie的

其他详细的差异与实现,文章结尾由参考的完章,里面有详细的解释

localstorge和sessionstorge的关系?

localStorage 是 HTML5 标准中新加入的技术,它并不是什么划时代的新东西。早在 IE 6 时代,就有一个叫 userData 的东西用于本地存储,而当时考虑到浏览器兼容性,更通用的方案是使用 Flash。localStorage 的数据需要手动清除

sessionStorage 与 localStorage 的接口类似,但保存数据的生命周期与 localStorage 不同。做过后端开发的同学应该知道 Session 这个词的意思,直译过来是“会话”。而 sessionStorage 是一个前端的概念,它只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。当页面关闭后或者关闭浏览器后,sessionStorage 中的数据就会被清空。

两者分关系就是他们都是浏览器上的存储方式,你可以直接去调用他们,还有一点就是它们存储的都是字符串,不可以存储json对象

userData

IE浏览器可以使用userData来存储数据,容量可达到640K,这种方案是很可靠的,不需要安装额外的插件。缺点:它仅在IE下有效。

indexedDB

IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。

三者的异同?

特性

Cookie

localStorage

sessionStorage

数据的生命期

一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效

除非被清除,否则永久保存

仅在当前会话下有效,关闭页面或浏览器后被清除

存放数据大小

4K左右

一般为5MB

与服务器端通信

每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题

仅在客户端(即浏览器)中保存,不参与和服务器的通信

易用性

需要程序员自己封装,源生的Cookie接口不友好

源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

  cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。   cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。   sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

cookie的安全性问题?

cookie的最大安全问题就是XSS攻击 ,主要方式就是汪接口里注入js代码,防范的方法基本上还是网站开发人员的事,一般的方法就是提高验证的可靠性,设置cookie的http只读属性等,具体的xss盗取Cooke的过程可以参考本文底部的引用文章;

参考文献:

cookie相关:http://bubkoo.com/2014/04/21/http-cookies-explained/

cookie与session对比相关:

localStorage文章:https://jerryzou.com/posts/cookie-and-web-storage/

Xss获取cookie: