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之日期选择器的深入解析
Jun 19 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
JS.findElementById()使用介绍
Sep 21 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
Feb 03 Javascript
jQuery源码分析之Callbacks详解
Mar 13 Javascript
每日十条JavaScript经验技巧(二)
Jun 23 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
jquery animate动画持续运动的实例
Nov 29 jQuery
Vue-Router的使用方法
Sep 05 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
Dec 24 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
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
python的多重继承的理解
2017/08/06 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python之array赋值技巧分享
2019/11/28 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
读后感作文评语
2014/12/25 职场文书
2015年端午节活动总结
2015/02/11 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
学校节水倡议书
2015/04/29 职场文书
干部培训简讯
2015/07/20 职场文书
法制工作总结2015
2015/07/23 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP