JavaScript cookie原理及使用实例


Posted in Javascript onMay 08, 2020

什么是cookie?

cookie 是本地计算机的临时存储。

作用:在浏览器中进行数据的存储,用户名、密码(比如:保存页面信息,自动登录等)。

特点:

  • cookie需要在服务器环境下运行;
  • cookie的容量在4kb左右,限制为每个域名50个cookie个数(IE),不同浏览器容量和个数不同;
  • cookie以字符串类型存储,不同域名存储的数据是无法共享;
  • cookie默认是临时存储的,当浏览器关闭时,自动销毁;
  • cookie可以被禁用也可以删除,且安全性不高。
  • 可以对cookie值进行加密(MD5);

读取和设置cookie

document.cookie = "user=123456";
console.log(document.cookie); //user=123456

使用f12查看当前页面存储的cookie

JavaScript cookie原理及使用实例

注意:

在打开网址时或者提交表单时自动裹挟着cookie数据发送到服务器,并且服务端程序可以 继续裹挟着新的cookie内容存储在你的电脑的cookie中。

设置cookie的生存期

格式:document.cookie = “名称=值;expires=” + 时间;(时间必须是一个字符串)。

var date=new Date();
date.setHours(date.getHours()+1);//设置1小时的生存期
// document.cookie="a=3"; //先存入a=3,只运行第一次
console.log(document.cookie);
var a=Number(document.cookie.split("=")[1]);
a++;
document.cookie="a="+a+";expires="+date.toUTCString();

上面代码表示:设置cookie在当前时间的一个小时后过期,第一次运行先存入a为3的值,然后把cookie的值从字符串转为数值型,再进行累加,每次设置生存期都要把data对象转为字符串类型(toUTCString)。

在生存期内的cookie,关闭页面不会销毁,生存期结束,关闭页面销毁cookie;

cookie存储多个数据

var obj={
      user:"xietian",
      age:30,
      sex:"男"
    }
    function setCookie(obj,date){
      for(var prop in obj){
        document.cookie=prop+"="+obj[prop]+(date ? ";expires="+date.toUTCString() : "");
      }
    }
    var date=new Date();
    date.setFullYear(2021); 
    setCookie(obj,date);

使用reduce获取多个cookie值

var o=getCookie();
   console.log(o);
    function getCookie(){
      return document.cookie.split("; ").reduce((value,item)=>{
          var arr=item.split("=");
          value[arr[0]]=isNaN(arr[1]) ? arr[1] : Number(arr[1]);//数字(年龄)需要转为数值型
          return value;
      },{});
    }

关于cookie安全

XSS攻击:XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序(百度百科)。

XSS攻击需要具备的条件:

1. 必须是同一个域当中页面的表单提交,必须有文本内容提交

2. 提交的内容需要被放置在页面中,例如评论等内容

3. 在提交的文本中出现script标签,并且这个标签没有被替代,直接放入在页面中

4. 这个页面可以被所有用户查看到

5. 这个script标签具备一定的盗窃cookie特征

解决办法

提交页面时将script标签过滤再提交;

但可以通过插入图片的超链接,点击是执行JavaScript脚本; 遇到这种时就需要将JavaScript脚本替换

关于cookie安全还要其他攻击方式这里只简单介绍一下cookie,深入了解请上网查询资料。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现图片翻页效果
Dec 23 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
使用JavaScript的AngularJS库编写hello world的方法
Jun 23 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
JavaScript中的各种宽高属性的实现
May 08 #Javascript
element-ui 实现响应式导航栏的示例代码
May 08 #Javascript
JS控制下拉列表左右选择实例代码
May 08 #Javascript
VSCode搭建React Native环境
May 07 #Javascript
Javascript查看大图功能代码实现
May 07 #Javascript
用VsCode编辑TypeScript的实现方法
May 07 #Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 #Javascript
You might like
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php 常用字符串函数总结
2008/03/15 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
Yii2如何批量添加数据
2016/05/17 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
php源码的使用方法讲解
2019/09/26 PHP
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
英国家用电器购物网站:Hughes
2018/02/23 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
青春寄语大全
2014/04/09 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
Go语言grpc和protobuf
2022/04/13 Golang