介绍cookie、session、websocket、httponly

cookie

http是无状态的,关于无状态,可以看这一文http无状态无连接,也就说说http连接中,用户端请求一次,服务器响应一次,然后就断开连接,不会记录双方的状态。那么我们登陆一个网站时,每次发起请求,都要输入用户名和密码,很麻烦,因此就出现了cookie。

cookie是能够让网站服务器把少量文本数据存储到客户端的硬盘、内存,或者从客户端硬盘、内存读取数据的一种技术。

cookie可以随着http请求一起传递,用来标识用户,维持会话,不用每次都输入用户名和密码。

但是!

并不是所有cookie都是记录登陆密码的,有的只是存储一些临时信息,这种情况下黑客拿到了cookie也没有用。

cookie的类型

cookie存在客户端中,有的存储在内存中叫内存cookie,有的存储在硬盘中叫硬盘cookie。

  1. 持久cookie:硬盘cookie,除非手动清理或者到了过期时间,否则不会被删除
  2. 非持久cookie:内存cookie,浏览器关闭就消失

cookie大小与多少(限制)

  1. 浏览器限制了最大的cookie为4KB左右
  2. 浏览器只允许每个站点存储20个cookie
  3. 浏览器对所有的cookie总数限制,通常为300

cookie存储的位置

在c盘的某一个cookie文件夹中,我查了Windows10的cookie文件夹在哪,可惜里面什么都没有...这也可以理解,随便就找到了,多不安全!

然后我打开浏览器,可以在浏览器里查看保存的cookie,也可以打开cookie看里边的数据,看来关于cookie,都是浏览器在做事!

//在浏览器中查看cookie

//这是cookie及里面的数据

cookie格式

在文件夹中,每个cookie都是一个txt文件,以“用户名@网站url”命名,txt文件中记录了经过加密的cookie变量名和值

我在浏览器中只能看到经过加密的cookie变量名和值,没有在文件夹中找cookie文件。

cookie中有很多变量,总之就是定义一下cookie文件被访问的范围,有效时间等。

session

刚刚我们介绍的cookie机制是浏览器端维持会话的,还有session机制是服务器端维持会话的。

session,被称为“会话”,也就是用户从进入网站到关闭浏览器所经过的时间,服务器再这段时间使用类似散列表结构来保存信息,当浏览器关闭后,session自动注销,当用户再次连接时,session重新分配。

session通过唯一sessionid来区分不同用户,每次会话结束,sessionid自动注销,下次重新分配sessionid。

cookie将数据存储在客户端,session将数据保存在服务器端,只将sessionid存储在浏览器,sessionid可以存储在cookie中。

因此,相对来说,session机制比较安全。

httponly

JavaScript和php、Java都有读写cookie的能力,如果恶意脚本读写了cookie,加密再厉害也没有用,最好是禁止他们读写cookie!

httponly是cookie中的一个参数,如果值是“否”,就代表禁止JavaScript读取cookie

websocket

Websocket协议是基于HTTP协议的,借用http完成Websocket握手,成功建立Websocket连接, WebSocket 连接本质上就是一个 TCP 连接,使接下来的会话完全按照Websocket协议进行。

Websocket的作用

作用:实现实时信息传递,客户端和服务器端可以通过websocket通道实现双向传输数据(服务器主动发送信息给客户端)。

 http协议是无状态无连接的,一次对话结束就结束连接,服务器不能主动向浏览器发送信息。为了实现持续连接,出现了http long poll ,或者ajax轮询这些机制,但是这些机制都是让浏览器过一会询问服务器,或者一直连接,直到回复消息,这些机制都不好,比较浪费资源。

使用websoket协议的服务端就可以主动推送信息给客户端。

 


版权声明:本文为luluoluoa原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。