理解cookies

简介: 目录理解cookies1. 什么是cookies2. cookies存在的意义3.如何使用cookies4. cookies安全参考理解cookies​ 对于一个web开发者来说,了解基本的http协议是必不可少的,只有基础扎的牢,才能在使用的时候游刃有余。

目录

理解cookies

​ 对于一个web开发者来说,了解基本的http协议是必不可少的,只有基础扎的牢,才能在使用的时候游刃有余。

对于学习我一直都是抱着刨根问底的态度,有人说学习一个东西很简单,有人说学习一个东西很难,恰好我属于后者,在我的大脑里面,学习与使用是两个不同的层次,学习应该是包涵使用的。

(文章开头就说这么废话)

这篇文章的主题是cookies,下面我来谈谈我的对cookies的认识。

1. 什么是cookies

cookies是http协议的一部分,它主要用来存储一些很少的数据,这些数据可以往来于客户端与服务器之间。

2. cookies存在的意义

为什么会有cookies这种东西存在,这要从http的特性谈起,起初http是一个无状态的协议(当然现在也是无状态的协议),之所以无状态是因为http是基于tcp的上传应用协议,它的一个主要特点就是用完即放,也就是客户端发起请求、服务器相应后tcp连接就断开了,这种模式决定了是http无法保存状态。

协议本身就是一种约定,为相同的场景约定出来一套规范,为未来可能的场景预测出来一套规范。

那么有了cookies后http就变得有状态了,可以说cookies是对http的扩展或者增强,比较常用的比如:保存用户的登陆状态。虽然是对http的一种增强,但是也引入了一些安全问题,后面会谈到具体的安全隐患。

cookies是一种古老的技术,算然现在的浏览器提供了其它本地存储技术,但还是不能完全替代cookies,因为cookies是一种可以被服务器端控制的客户端存储技术,而无需我们用javascript写额外的存储代码。

3.如何使用cookies

cookies中定义了几个关键属性来保证cookies的正常工作。
  • Expires:
    • 如果在不设定该值时为【会话期cookie】也就是说当浏览器关闭的时候cookie失效,
    • 持久cookie,设置该值为一个固定的日期,在这个日期之前cookie会一直有效
  • Domain、Path:

    • Domain用来指定该cookie可以被哪个主机访问,若设置了该值通常包含其子域名;默认为当前文档的主机,不包含子域名。

    • Path:设置可被主机下的哪些路径访问,例如/docs与/docs/会匹配不同的路径,前者包含子路劲,后者仅为当前路径
  • SameSite:
    • 设置在跨站请求时cookie怎么发送,asp.net core中定义了三种模式:lax、none、strict,默认为lax松懈模式。
  • Secure、HttpOnly:
    • Secure设置的cookie要求必须在https协议中才会被发送到服务器(高版本浏览器支持)
    • HttpOnly设置的cookie不允许客户端访问,防止xss攻击

4. cookies安全

http中引入cookies虽然解决了状态的问题,但也引入了新的安全问题,如何才能保证cookies不被窃取。在我看来http是无安全可言的,我们能做的很少,我们努力尽量防止客户端被攻破,但也只仅仅是稍微增加了一点破解难度而已。

下面列举两个经常遇到的安全问题:

  • xss攻击

    跨站脚本攻击,通过设置HttpOnly来阻止客户端获取cookies

  • csrf

    跨站请求伪造,被攻击的网站对于敏感的操作增加确认步骤。

    //如果用户恰好登陆example.com,此时如果在同一浏览器的其它站点无意中有以下图片代码,则就会被攻击。
    <img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory">

参考

目录
相关文章
|
5月前
|
存储 开发框架 负载均衡
什么是浏览器 cookies 里的 JSessionID?
什么是浏览器 cookies 里的 JSessionID?
85 0
什么是浏览器 cookies 里的 JSessionID?
|
3月前
|
存储 缓存 物联网
新EDPB指南:不只是Cookie
保障中国企业符合《个人信息保护法》合规,方案包括梳理基线、发现敏感信息、简化评估工作流、快速响应权利请求、满足告知同意要求,以及有效保护敏感数据。用九智汇整合自动化工具和规则引擎,确保高效风险评估、合规证据链建立,进一步保障数据安全。
32 1
|
5月前
|
存储 安全 算法
96 # cookie
96 # cookie
17 0
|
9月前
|
存储 编解码 应用服务中间件
Cookie浅谈
Cookie浅谈
53 0
|
9月前
|
存储
|
10月前
向Cookie里添加东西
向Cookie里添加东西
52 0
|
存储 安全 JavaScript
Cookies与Session
因为 HTTP 是无状态的,所以为了将一个请求与其他请求相关联,需要一种在 HTTP 请求之间存储用户数据(保持应用程序状态)的方法。Cookies 和 Sessions 都是在浏览器发出的不同请求之间保持应用程序状态的方法。
76 0
Cookies与Session
|
存储 JavaScript 安全
cookies之事一二三
HTTP cookies,通常简称为cookies,起初是用来在客户端的会话信息。服务端的响应会在HTTP header中通过Set-Cookie加入会话信息:
69 0
|
开发者
获取cookies
网页开发者工具
126 0
获取cookies
|
存储 Web App开发 前端开发
60、Cookie
Cookie 是服务器保存在浏览器的一小段文本信息,一般大小不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这段信息。
181 0