HCIE网络安全第七天

简单概述

什么是超文本(Hyper Text)
包含有超链接(Link)和各种多媒体元素标记的文本。这些超文本文件彼此连接,形成网状,因此又被称为网页。这些连接使用URL表示。最常见的超文本格式是超文本标记语言HTML。

URL:统一资源定位符
用来唯一地表示万维网中的某一个文档。
由协议、主机和端口(默认为80)以及文件名三部分构成。
在这里插入图片描述

什么是超文本传输协议HTTP
是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

HTTP工作原理

请求/响应交互模型
我们假设用户点击URL为http://www.qq.com/index.html的连接后,浏览器和Web服务器执行以下动作:

  1. 浏览器分析超链接中的URL。
  2. 浏览器向DNS请求解析www.qq.com的IP地址。
  3. DNS将解析出的IP地址222.246.129.80返回浏览器。
  4. 浏览器与服务器建立TCP连接。
  5. 浏览器请求文档:GET/index.html。
  6. 服务器给出响应,将文档index.html发送给浏览器。
  7. 释放TCP连接。
  8. 浏览器显示index.html中的内容。

在这里插入图片描述

HTTP的连接方式和无状态性

  • 非持久性连接
    即浏览器没请求一个web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
    HTTP1.0、HTTP0.9采用此链接方式。
  • 持久性连接
    即在一个连接中,可以进行多次文档的请求和相应。服务器在发送完响应后,并不立刻释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。
  • 无状态性
    是指同一个客户端(浏览器)第二次访问同一个web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。

在这里插入图片描述

访问网站分析

  1. 查看host文件。
  2. dns请求;PC向DNS服务器发出DNS QUERY请求,请求域名的A记录。
  3. DNS回复;dns服务器回复dns response,解析出域名对应的A记录。
  4. PC想解析出的域名服务器地址发起tcp三次握手。
  5. PC向域名服务器发出get请求,请求主页。
  6. 域名服务器回复http,返回主页数据包。
  7. 完成数据交互过程,四次挥手断开连接。

HTTP请求方法

请求报文中的方法
方法是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
在这里插入图片描述

HTTP响应

响应报文中的状态码
状态码是响应报文状态行中包含的一个3为数字,指明特定的请求是否被满足,原因是什么。
状态码分为以下五类:
在这里插入图片描述
HTTP头部
首部字段或消息头
在这里插入图片描述

会话与会话状态简介

  • 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话。
  • WEB应用中的会话是指一个客户端浏览器与WEB服务器之间持续发生的一系列请求和响应过程。
  • WEB应用的会话状态是指WEB服务器与浏览器在会话过程中产生的状态信息,借助会话状态,WEB服务器能够把属于同一会话中的一系列的请求和响应过程关联起来。

Cookie概述

  • Cookie是一种在客户端保持HTTP状态信息的技术。
  • Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。
  • 一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这个Cookie回传给WEB服务器。
  • WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。
  • 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称和设置值。
  • 一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
  • 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

Cookie的传送过程示意图
在这里插入图片描述

Cookie功能特点

  • 存储于浏览器头部/传输于HTTP头部
  • 写时带属性,读时无属性
  • 由三元组[name,domain,path]唯一确定cookie

Cookie请求头字段

  • 浏览器使用Cookie请求头字段将Cookie信息回送给WEB服务器。
  • 多个Cookie信息通过一个Cookie请求头字段回送给WEB服务器。
  • 浏览器根据下面的几个规则决定是否发送某个Cookie信息:
    1、请求的主机名是否与某个存储的Cookie的Domain属性匹配。
    2、请求的端口号是否在该Cookie的Port属性列表中。
    3、请求的资源路径是否在该Cookie的Path属性指定的目录及子目录中。
    4、该Cookie的有效期是否已过。
  • Path属性指向子目录的Cookie排在Path属性指向父目录的Cookie之前。

Cookie的安全属性

  • secure属性
    当设置为true时,表示创建的Cookie会被以安全的形式向服务器传输,也就是只能在HTTPS连接中被浏览器传递到服务器端进行会话验证,如果是HTTP连接则不会传递该信息,所以不会被窃取到Cookie的具体内容。
  • HttpOnly属性
    如果在Cookie中设置了这个属性,那么通过程序将无法读取到Cookie信息,这样能有效的防止XSS攻击。
    secure属性是防止信息在传递过程中被监听捕获后信息泄露,HttpOnly属性的目的是防止程序获取Cookie后进行攻击。
    这两个属性并不能解决Cookie在本机出现的信息泄露的问题。

什么是Session

  • 使用Cookie和附加URL参数都可以将上次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。
  • Session技术时一种将会话状态保存在服务器端的技术,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病例档案的结合方式。
  • 客户端需要接受、记忆和回送Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号。

Session的跟踪机制

  • Servlet API规范中定义了一个HttpSession接口,这个接口定义了各种管理和操作会话状态的方法。
  • HttpSession对象是保持会话状态信息的存储结构,一个客户端在WEB服务器端对应一个各自的HttpSession对象。
  • WEB服务器并不会在客户端开始访问时就创建HttpSession对象,只有客户端访问某个能与客户端开启会话的Servlet程序时,WEB应用程序才会创建一个与该客户端对应的HttpSession对象。
  • WEB服务器为HttpSession对象分配一个独一无二的会话标识号,然后在响应消息中将这个会话标识号传递给客户端。客户端需要记住会话标识号,并在后续的每一次访问请求中都把这个标识号传送给WEB服务器,WEB服务器端程序依据回传的会话标识号就知道这次请求的是哪一个客户端发出的,从而选择与之对应的HttpSession对象。
  • WEB应用程序创建了与某个客户端对应的HttpSession对象后,只要没有超出一个限定的空闲时间段,HttpSession对象都驻留在WEB服务器内存之中,该客户端此后访问任意的Servlet程序时,他们都使用与客户端对应的那个已存在的HttpSession对象。
  • HttpSession接口中专门定义了一个setAttribute方法来将对象存储到HttpSession对象中,还定义了一个getAttribute方法来检索存储在HttpSession对象中的对象,存储仅HttpSession对象中的对象可以被属于同一个会话的各个请求的处理程序共享。
  • Session是实现网上商城的购物车的最佳方案,存储在某个客户Session中的一个集合对象就可充当该客户的一个购物车。

Session的超时管理

  • WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无法检测客户端浏览器是否关闭,所以,即时客户已经离开或关闭了浏览器,WEB服务器还要保留与之对应的HttpSession对象。
  • 随着时间的推移而不断增加新的访问客户端,WEB服务器内存中将会因此积累起大量的不再被使用的HttpSession对象,并将最终导致服务器内存耗尽。
  • WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。

利用Cookie实现Session跟踪

  • 如果WEB服务器处理某个访问请求时创建了新的HttpSession对象,它将把会话标识号作为一个cookie项加入到响应消息中,通常情况下,浏览器在随后发出的访问请求中又将会话标识号以cookie的形式回传给WEB服务器。
  • WEB服务器端程序依据回传的会话标识号就知道以前已经为该客户端创建了HttpSession对象,不必再为该客户端创建新的HttpSession对象,而是直接使用与该会话标识号匹配的HttpSession对象,通过这种方法就实现了对同一个客户端的会话状态的跟踪。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值