COOKIE历史中的发展

COOKIE

目前主流的各种web应用中,大都是基于http协议进行传输的。而http协议有一个很重要的特点就是无状态,也就是说我们发送一个请求,服务器接收到你的请求后是无法知道你是谁,那时候的web只能用作资源获取。

94年的时候,网景公司(没错,就是那个发明JS的公司)为了解决用户网上购物的购物车功能,首先提出并应用了cookie技术。解决http无状态的特性下无法满足交互式web。

cookie说到底其实就是一段储存在浏览器的数据,最大不能超过4kb,会随着用户请求一并发送至服务器,这样就达到了保持用户登录状态的初衷。

首次:浏览器发送请求—>服务器接受并返回一个带有Set-Cookie头部参数的响应—>浏览器保存cookie到本地。
往后:浏览器发送带有cookie的请求—>服务器接受并认出你,然后返回响应

SESSION

一开始的时候,当我们做登录操作,一般都是将用户名和密码保存到cookie中,这样再次请求的时候浏览器直接将带有用户名密码的cookie发送到服务端验证,即使浏览器会对cookie进行本地加密,但是这样还是极度危险的。

为了更加安全地管理用户会话。session应运而生。session是基于cookie,在服务器储存的一个对象,session原理如下:

首次:浏览器发送请求—>服务器接受并生成session对象,然后返回一个带有Set-Cookie为sessionID的头部参数的响应—>浏览器保存cookie到本地。
往后:浏览器发送带有cookie(内含sessionID)的请求—>服务器接受并在session对象中找到并认出你,然后返回响应

TOKEN

后来的后来啊,web应用火起来了,前端做的东西复杂化,后端不能再一把梭了,或前后端代码分别跑在不同的服务下了,就开始了前后端分离。这时候做登录操作最方便的方法就是前端发送一个登录请求,后端生成一个加密鉴权码返回给你也就是token,用来区分你和其他用户,下次的请求前端就在请求头带上这个token,服务器就能认出你了。

聊聊第三方COOKIE和广告

平常我们访问一个网站,随着请求携带着只属于当前访问网站而不是其他网站的cookie,这是由于同源策略的关系,叫做第一方cookie。

同源策略:
本质上是限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互,
如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源。
跨域资源的引入不受限制,例如,微博前端使用$('body').append('') 将你的页面插入到页面中,这时候凡是浏览到你这条微博的人都会弹窗。

XSS

上面的其实只是恶作剧,破坏性不大,最多降低体验。现在假设我注入的是,那么就直接调起了一个用户请求,用户在微博的所有cookie就全部被发送到攻击者指定的服务器下,攻击者拿到cookie等于是直接拥有你账号的控制权了。

XSS

更甚的注入,这个来自于攻击者的js就会运行在你的浏览器端,攻击者可以随时变着法的看你、干扰你、偷你。

防御的方法:web端表单过滤(边角替换全角)—>服务端表单检查过滤—>web端输出编码,另外也可以cookie设置httpOnly防止cookie被窃取。

你可能感兴趣的:(COOKIE历史中的发展)