Cookie的特点和使用经验/建议总结

一、前言

  • 什么是Cookie?

Cookie就是以Key,Value的形式存储在浏览器端的数据。 https://baike.baidu.com/item/cookie/1119

二、工作原理&应用场景

  • 工作原理

在Request的时候,浏览器将Cookie信息放在HTTP-Request Headers中。 在Response的时候,浏览器保存HTTP-Response Headers信息中的Cookie信息。

Cookie的核心信息包含三个部分:Name、Value、过期时间。 Cookie的保存是覆盖式的,所以Cookie的添加、更新、删除对于浏览器来说都是执行设置(set)的动作。

  • 应用场景
  1. 记住用户名
  2. 购物车信息

三、特点

1、存储特点

  • (1)存储大小受限,跟浏览器版本有关
  • (2)存储条数受限,跟浏览器版本有关
  • (3)字符编码为Unicode,不支持直接存储中文
  • (4)存储内容可以被轻松查看,不建议存储敏感信息
  • (5)可靠性差,可能随时都会因为各种原因被删除
  • (6)存储属性除了Name、Value、过期时间,还有Domian、Path,当前域可以操作当前域子域、父域名的Cookie,当前Path,可以操作当前Path以及当前Path子、父Path下的Cookie。

domian:www.ken.io 是ken.io的子域,是test.www.ken.io的父域,同时也是blog.ken.io的同级域名。www.ken.io下的应用可以访问ken.io以及*.www.ken.io下的Cookie,但是不能访问blog.ken.io下的Cookie path:例如页面:http://ken.io/home/about 路径是/home/about,这个路径下可以访问到根路径/以及/home/*路径下的Cookie,当时不能访问到/category下的Cookie

2、传输特点

  • (1)每次Request客户端符合domian以及path要求的Cookie都会通过Request Headers传输到服务器端
  • (2)传输的Cookie大小会受到浏览器以及Web服务器的限制

3、安全特点

  • Cookie中的信息很容易被查看,建议加密后存储
  • Cookie容易被XSS攻击利用,可以设置HttpOnly=true,不允许客户端访问(99.9%的浏览器有效)

四、使用经验/建议

  • 不要保存未经加密敏感信息(安全性)
  • 如果不需要在客户端访问,设置HttpOnly=true(安全性)
  • 设置合理的过期时间(传输效率)
  • 不要存储过大的内容(传输效率)
  • 不要存储过多的条目(传输效率)
  • 设置合理的domian、path,减少不必要的Cookie传输(传输效率)
  • 不要存储非Unicode字符(可用性)
  • 不要存储不可恢复的信息(可靠性)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专注数据中心高性能网络技术研发

如何解压RPM包

Mellanox的驱动源码在centos7下面是使用RPM包封装的,需要解压此格式的包来获取源文件 RPM包括是使用cpio格式打包的,因此可以先转成cpio然...

3835
来自专栏前端vue

Node中间件multer文件上传实践

单文件上传,接收一个以fieldname命名的文件,文件信息保存在req.file

962
来自专栏决胜机器学习

PHP的CI框架的目录结构(一):Application文件夹

(原创内容,转载请注明来源,谢谢) CI框架全名CodeIgniter,是PHP的一个开源框架。和多数基于MVC架构的框架类似,CI框架的初始...

6386
来自专栏difcareer的技术笔记

JNI实现源码分析【一 前言】正文

JNI(Java Native Interface)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 说得直白一...

902
来自专栏帅小子的日常

JVM内存管理

1273
来自专栏帅小子的日常

JVM内存管理

2936
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(十四) ——Redis RDB文件创建、载入与自动保存原理

《Redis设计与实现》读书笔记(十四) ——Redis RDB文件创建、载入与自动保存原理 (原创内容,转载请注明来源,谢谢) 一、概述 r...

3236
来自专栏拂晓风起

cocos2d-js 3.0 rc0 编译release报错 value for keystore is not valid. it must resolve to a single path

1122
来自专栏性能与架构

nginx 缓存机制

Nginx缓存的基本思路 利用请求的局部性原理,将请求过的内容在本地建立一个副本,下次访问时不再连接到后端服务器,直接响应本地内容 Nginx服务器启动后,会对...

5936
来自专栏小樱的经验随笔

【批处理学习笔记】第十二课:常用DOS命令(2)

 文件管理 type 显示文本文件的内容。 copy 将一份或多份文件复制到另一个位置。 del 删除一个或数个文件。 move 移动文件并重命名文件和目录。(...

2834

扫码关注云+社区