2019.04.05-cookie与localstorage-b

2022-05-24  本文已影响0人  苏本的书柜

20190405-cookie与localstorage

*   localstorage与sessionsytorage

    *   localstorage

        *   可以保存数据到本地

        *   生命周期

            *   localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失

            *   除非主动删除数据,否则数据永远不会消失

        *   存储大小

            *   5MB

        *   保存位置

            *   都保存在客户端,不与服务器进行交互通信

        *   存储内容对象

            *   只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理

        *   获取方式

            *   window.localStorage

                *   getitems

        *   应用场景

            *   适合长期保存在本地的数据

    *   sessionsytorage

        *   生命周期

            *   仅在当前会话下有效

            *   同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在

        *   存储大小

            *   5MB

        *   保存位置

            *   都保存在客户端,不与服务器进行交互通信

        *   存储内容对象

            *   只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理

        *   获取方式

            *   window.sessionStorage

        *   应用场景

            *   敏感账号一次性登录

    *   优点

        *   存储空间更大

        *   节省网络流量

        *   快速显示,不需要经过服务器

        *   安全性更高,不需要担心被截取

        *   操纵方法

            *   setItem (key, value) —— 保存数据,以键值对的方式储存信息。

            *   getItem (key) —— 获取数据,将键值传入,即可获取到对应的value值。

            *   removeItem (key) —— 删除单个数据,根据键值移除对应的信息。

            *   clear () —— 删除所有的数据

            *   key (index) —— 获取某个索引的key

*   cookie

    *   缺点

        *   cookie的大小是受限制的,一个cookie只能设置4KB的数据。并且大多数浏览器只允许每个站点存储20个Cookie;

        *   cookie保存的数据,无论服务器端是否需要,每次请求都会被发送到服务器端,白白耗费网络资源。并且,数据一般是非加密传输,存在安全隐患;

        *   cookie缺少操作数据的API,需要开发者自己封装接口,使用起来极不方便。

        *   cookie大小限制在4k左右,不适合存业务数据

        *   cookie每次随HTTP事务一起发送,浪费带宽

    *   Cookie从你设置的时候,就会给个时间,不设置默认会话结束就过期;

    *   Cookie 的本职工作并非本地存储,而是“维持状态”。因为HTTP协议是无状态的,HTTP协议自身不对请求和响应之间的通信状态进行保存

    *   操作cookie

        *   1、引入jquery.cookie.js

            *   <script type="text/javascript" src="js/jquery.min.js"></script>

            *   <script type="text/javascript" src="js/jquery.cookie.js"></script>

        *   2、设置 "会话"cookie

            *   $.cookie('username', 'xy');

            *   cookie有效期默认到用户关闭浏览器

        *   3、设置有效时间

            *   $.cookie('username', 'xy', { expires: 7 });

        *   4、设置有效路径

            *   $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });// 如果在整个网站中访问这个cookie需要这样设置有效路径:path: '/'

        *   5、读取cookie

            *   $.cookie('username')

            *   注:cookie是基于域名来储存的。意思您要放到测试服务器上或者本地localhost服务器上才会生效。cookie具有不同域名下储存不可共享的特性。单纯的本地一个html页面打开是无效的。

        *   6、删除cookie

            *   $.cookie('username', null); //通过传递null作为cookie的值即可

        *   7、可选参数

            *   domain:'[jquery.com](http://jquery.com/)', // (String)创建该Cookie的页面域名;

            *   secure:true // (Booblean)如果设为true,那么此Cookie的传输会要求一个安全协议,例如:HTTPS;

            *   })

            *   $.cookie('the_cookie','the_value',{

            *   expires:7, //(Number|Date)有效期;设置一个整数时,单位是天;也可以设置一个日期对象作为Cookie的过期日期;

            *   path:'/', // (String)创建该Cookie的页面路径;

    *   保存在服务器端

    *   机制

        *   如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。

    *   Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它

    *   cookie只能保存字符串类型,以文本的方式

    *   应用场景

        *   )判断用户是否登陆过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。

        *   (2)保存上次登录的时间等信息。

        *   (3)保存上次查看的页面

        *   (4)浏览计数

    *   *  ![image.png](https://img.haomeiwen.com/i817567/e5fcc007be9ceab1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


*   seesion

    *   cookie和session都是用来跟踪浏览器用户身份的会话方式。

    *   保存在浏览器端

    *   当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。如果有sessionid,服务器将根据该id返回对应session对象。如果客户端请求中没有sessionid,服务器会创建新的session对象,并把sessionid在本次响应中返回给客户端。通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url) 进行实现;API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。

    *   seesion可以保存对象

    *   session的安全性大于cookie。

        *   1)sessionID存储在cookie中,若要攻破session首先要攻破cookie;

        *   (2)sessionID是要有人登录,或者启动session_start才会有,所以攻破cookie也不一定能得到sessionID;

        *   (3)第二次启动session_start后,前一次的sessionID就是失效了,session过期后,sessionID也随之失效。

        *   (4)sessionID是加密的

        *   (5)综上所述,攻击者必须在短时间内攻破加密的sessionID,这很难。
上一篇下一篇

猜你喜欢

热点阅读