目录
HTTP(HyperText Transfer Protocol)
HTTPS(HyperText Transfer Protocol Secure)
一、web安全基础
1、web安全概述
Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。
HTTP与HTTPS的区别:http协议传输数据时不进行加密,https协议传输数据时会对数据进行加密。
1、1web应用架构
WEB应用架构:C/S(client/server)、B/S(borwer/server)
C/S(Client/Server)架构
定义:C/S架构,即客户端/服务器架构,是一种分布式应用架构。在这种架构中,应用程序被分为两部分:客户端和服务器端。客户端运行在用户的设备上(如PC、手机等),负责用户界面的展示和与用户的交互;服务器端则负责处理数据逻辑和存储数据。
特点:
客户端需要安装专用的软件。
客户端和服务器之间通过特定协议进行通信。
适用于对性能和安全性要求较高的场景,如游戏、大型数据库应用等。
B/S(Browser/Server)架构
定义:B/S架构,即浏览器/服务器架构,是随着互联网技术的发展而兴起的。在这种架构中,用户通过Web浏览器(如Chrome、Firefox等)访问服务器上的Web应用。服务器处理用户的请求并返回相应的HTML页面或数据。
特点:
客户端无需安装特定软件,只需有Web浏览器即可。
客户端和服务器之间通过HTTP/HTTPS等协议进行通信。
易于维护和升级,用户只需更新服务器端的应用即可。
适用于广泛的互联网应用,如网上购物、网络银行、社交媒体等。
1、2web架构
1.2.1.Web架构基础
Web架构通常包括前端(客户端)、后端(服务器端)以及它们之间的通信协议(如HTTP/HTTPS)。在网安领域,Web架构的安全性不仅取决于这些基本组件,还涉及一系列的安全设备和策略。
1.2.2Web安全组件
Web架构中,常见的安全组件包括:
-
防火墙(Firewall) :
- 位于网络入口处,用于防止未经授权的访问和数据传输。
- 通过包过滤、应用代理等方式,对网络流量进行监控和限制,保护网络免受恶意攻击。
-
入侵检测系统(IDS) :
- 实时监测网络流量的安全组件,能够检测出网络中存在的异常行为和潜在威胁。
- 通过收集和分析网络中的数据包、日志等信息,发现潜在的攻击行为,并及时发出警报或采取防护措施。
-
入侵预防系统(IPS) :
- 一种主动防护设备,能够在发现潜在威胁时自动采取措施,防止攻击行为的发生。
- 通常采用深度包检测等技术,对网络流量进行实时监测和过滤,确保网络的安全性。
-
Web应用防火墙(WAF) :
- 专门针对Web应用的安全组件,通过识别和过滤恶意请求,防止常见的Web应用攻击(如SQL注入、跨站脚本攻击等)。
- WAF可以部署为硬件型、软件型或云WAF,根据实际需求选择合适的部署方式。
-
安全事件管理(SIEM) :
- 综合性的安全组件,能够对各种安全设备和日志进行统一管理和分析。
- 实时收集、处理和分析网络中的日志和事件信息,帮助管理员及时发现潜在的安全威胁和异常行为。
1.2.3Web架构安全策略
除了上述安全组件外,网安的Web架构还需要遵循一系列的安全策略,包括:
-
访问控制:
- 实施严格的访问控制策略,确保只有授权用户才能访问Web应用。
- 使用身份验证和授权机制,如用户名和密码、OAuth、JWT等。
-
数据加密:
- 对敏感数据进行加密处理,防止数据在传输和存储过程中被窃取或篡改。
- 使用HTTPS协议对Web应用进行加密传输,确保数据的安全性。
-
安全更新和补丁管理:
- 定期更新Web应用、操作系统和安全组件的补丁,以修复已知的安全漏洞。
- 建立有效的补丁管理流程,确保所有系统都保持最新的安全状态。
-
日志和监控:
- 记录和分析Web应用的日志信息,以便及时发现和响应潜在的安全威胁。
- 使用日志分析工具(如Wireshark、Fiddler等)对网络流量进行监控和分析。
1.2.4Web架构模式
Web架构中,还涉及一些特定的架构模式,如:
-
CDN(内容分发网络) :
- 提高Web应用的访问速度,并隐藏真实源IP地址,增加攻击难度。
- CDN节点可以缓存静态资源,减轻源服务器的压力。
-
反向代理:
- 作为Web应用的前端服务器,处理来自客户端的请求,并将其转发给后端的Web服务器。
- 反向代理可以提供负载均衡、缓存和SSL卸载等功能。
-
负载均衡:
- 将客户端的请求分发到多个后端服务器上,以提高Web应用的可用性和性能。
- 负载均衡器可以根据多种策略(如轮询、最少连接数等)来分发请求。
中间件是介于应用系统和系统软件
二、HTTP基础
随着web2.0时代的到来,互联网从传统的C/S架构转变为更加方便快捷的B/S架构。B/S即浏览器/服务器结构,就像我们访问过的所有网站,客户机只需要一个浏览器就可以访问
当客户端与web服务器进行交互时,就存在web请求,这种请求都基于统一的应用层协议(http协议)交互数据。
1、1HTTP协议解析
HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。
1、1、1报文结构与特点
1.1.1.1报文结构
HTTP报文分为请求报文和响应报文两种类型,它们的结构相似,但含义不同。
请求报文:
请求行:包含请求方法、请求URL和HTTP协议版本。
请求头部:包含多个字段,用于告知服务器关于请求的各种信息。
空行(可选):用于分隔请求头部和请求数据。
请求数据(可选):包含要发送给服务器的数据,如表单数据、文件内容等。
响应报文:
状态行:包含HTTP协议版本、状态码和状态信息。
响应头部:包含多个字段,用于描述响应的各种属性信息,如内容类型、内容编码、长度和连接方式等。
空行(可选):用于分隔响应头部和响应数据。
响应数据:包含服务器返回给客户端的实体内容,如HTML文档、图片、视频等。
1.1.1.2特点
HTTP协议具有以下几个特点:
- 无连接:每次请求都是独立的,服务器处理完请求后立即关闭连接(除非特别指定为keepalive)。
- 无状态:协议对于事务处理没有记忆能力,每次请求都需要提供完整的请求信息。
- 面向对象:可以传输任何类型的数据对象。
- 无阻塞:不会限制客户端的请求数量和大小,使得服务器可以处理大量的请求。
- 可缓存:允许客户端缓存服务器响应的内容,以提高响应速度和减少网络流量。
1.1.2.发起http请求
当在浏览器地址栏中输入一个URL,并按回车键后就发起了这个HTTP请求,很快就会看到这个请求的返回结果。
URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。URL的标准格式如下:协议://服务器IP[:端口]/路径/[?查询]。例如http://192.168.4.200/sqli-labs/Less-1/?id=2就是一个标准的URL。
借助浏览器可以快速发起一次HTTP请求,如果不借助浏览器应该怎样发起HTTP请求呢?其实可以借助很多工具发起http请求,例如,在linux系统中的curl命令。严格地说,浏览器也属于HTTP工具中的一种。
在windows中,也可以用curl.exe工具发起请求,通过curl+URL命令就可以简单地发起一个HTTP请求,非常方便。但windows没有自带curl.exe,打开curl.se/download.html可
进行下载:
编辑
安装完成后打开cmd界面向百度发起http请求,返回这个html数据,如图所示。如果想查看访问URL后服务器返回的HTTP请求头,加上-I参数即可:
编辑
图1:百度页面的html数据
编辑
图2:添加-I参数获取http响应头
此时脱离了浏览器来获取服务器响应和HTML数据,可以发现,就某些方面而言,浏览器在http协议方面只不过多了html渲染的功能,让用户看到更直观的界面。
1.1.3.HTTP协议详解
HTTP协议定义了客户端(如浏览器)与服务器之间的通信规范,以实现对各种资源(如HTML页面、图像、音频、视频等)的传输和访问。它是一个无状态的应用层协议,即不会保存客户端与服务器之间的历史记录,每个请求都是独立的。HTTP协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。也就是说,http请求只能由客户端发起,而服务器不能主动向客户端发送数据。
HTTP遵循请求/应答模型,web浏览器向web服务器发送请求时,web服务器处理请求并返回适当的应答,如图3所示:
客户端连接到服务器:
客户端(如浏览器)通过URL向服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
1、发送HTTP请求:
客户端通过TCP套接字向服务器发送一个文本的请求报文。
请求报文包括请求行、请求头部、空行(可选)和请求数据(可选)四个部分。
请求行包含请求方法(如GET、POST)、请求URL和HTTP协议版本。
请求头部包含多个字段,用于告知服务器关于请求的各种信息,如客户端类型、支持的内容格式、是否支持压缩等。
2、服务器接受请求并返回HTTP响应:
服务器接收到请求报文后,解析请求,找到对应的请求资源(如果找不到则发送错误信息)。
服务器将找到的资源封装在HTTP响应报文中,并通过TCP套接字发送给客户端。响应报文包括状态行、响应头部、空行(可选)和响应数据四个部分。
状态行包含HTTP协议版本、状态码和状态信息。状态码用于表示请求的成功或失败,如200表示成功,404表示未找到资源。
3、释放连接:
如果连接模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接。
如果连接模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。
1.1.2.1.HTTP请求与响应
1.1.2.1.1.HTTP请求
HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。下面是HTTP请求的一个例子:
POST /login.php HTTP /1.1 //请求行
HOST:www.xxser.com //请求头
User-Agent:Mozilla/5.0 (windows NT 6.1;rv:15.0) Gecko/20100101 Firefox/15.0
//空白行,代表请求头结束
Username=admin&password=admin //请求正文
HTTP请求行的第一行即为请求行,请求行由三部分组成,该行的第一部分说明了该请求是POST请求;该行的第二部分是一个斜杠(/login.php),用来说明请求的是该域名根目录下的login.php;该行的最后一部分说明使用的是HTTP1.1版本。
第二行至空白行为HTTP中的请求头(也被称为消息头)。其中,HOST代表请求的主机地址,User-Agent代表浏览器的标识。请求头由客户端自行设定。
HTTP请求的最后一行为请求正文,请求正文是可选的,它最常出现在POST请求方法中。
1.1.2.1.2HTTP响应
与HTTP请求对应的是HTTP响应,HTTP响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。
HTTP/1.1 200 OK //响应行
Date:Thu,28 FEB 2013 07:36:47 GMT //响应头
Server:BWS/1.0
Content-Length:4199
Content-type:text/html;charset=utf-8
Cache-Control:private
Expires:Thu,28 Feb 2013 07:36:47 GMT
Content-Encoding:gzip
Set-cookie:H_PS_PSSID=2022_1438_1944_1788;path=/;domain=.xxser.com
Connection:keep-Alive
//空白行,代表响应头结束
//响应正文或者叫消息主题
index.html
....
HTTP响应的第一行为响应行,其中有http版本(http/1.1)、状态码(200)以及消息“ok”。
第二行至末尾的空白行为响应头,由服务器向客户端发送。
消息报头之后是响应正文,是服务器向客户端发送的HTML数据。
1.1.2.2HTTP请求方法
HTTP请求的方法非常多,其中GET、POST最常见。
(1)GET
请求内容:GET方法通常用于请求服务器发送资源(如网页、图片等)。虽然GET请求可以包含查询字符串(URL中?后面的部分),用于传递一些参数给服务器,但这些参数是附加在URL上的,并且受到URL长度限制(不同浏览器和服务器有不同的限制,但通常认为最大长度约为2048个字符)。
安全性:由于GET请求的参数都包含在URL中,因此这些参数会被记录在浏览器的历史记录中,也可能被缓存或保存在服务器日志中。这可能导致敏感信息(如密码、个人身份信息等)的泄露,因此GET请求不适合用于传输敏感数据。
缓存:GET请求是可缓存的,这意味着如果两个请求的URL完全相同(包括查询字符串),那么浏览器或服务器可能会返回缓存的响应,而不是重新生成一个新的响应。
幂等性:GET请求被认为是幂等的,即多次执行相同的GET请求应该返回相同的结果(不考虑缓存和过期的情况)。
GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非HTML),那么返回文本是web容器解析后的HTML源代码。而不是源文件。例如请求index.jsp,返回的不是index.jp的源文件,而是经过解析后的HTML代码。
如下HTTP请求:
GET /index.php?Id=1 HTTP/1.1
HOST:www.xxser.com
使用GET请求index.php,并且id参数为1,在服务器端脚本语言中可以选择性地接收这些参数,比如id=1&name=admin,一般都是由于开发者内定好的参数项目才会接收,比如开发者只接收id参数项目,若加了其他参数项,如:
index.php?I=1&username=admin //多个参数项以“&”分隔
服务器端脚本不会理会加入的内容,依然只会接收id参数,并且去查询数据,最终向服务器端发送解析过的HTML数据,不会因为你的干扰而乱套。
(2)HEAD
用途:类似于GET请求,但服务器只返回响应的头部信息,不返回实际的数据内容。
特点:HEAD请求通常用于检查资源的元数据,如资源是否存在、资源的最后修改时间等。HEAD请求也是幂等的。
HEAD方法除了服务器不能在响应报文中返回消息主体外,其他都与GET方法相同。此方法经常被用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写扫描工具时,就常用此方法,因为只测试资源是否存在,而不用返回消息主题,所以速度一定是最快的。一个经典的HTTP HEAD请求如下:
HEAD /index.php HTTP/1.1
HOST:www.xxser.com
(3)POST
请求内容:POST方法用于向服务器提交数据,这些数据包含在请求体中,而不是附加在URL上。因此,POST请求可以发送大量数据,不受URL长度限制的限制。
安全性:由于POST请求的数据包含在请求体中,这些数据不会显示在URL中,也不会被记录在浏览器的历史记录中(除非用户手动保存)。因此,POST请求相对GET请求来说更加安全,更适合用于传输敏感数据(尽管仍然需要通过HTTPS等加密协议来保护数据的安全)。
缓存:POST请求通常不会被缓存,因为每次POST请求都可能会改变服务器上的资源状态。
幂等性:POST请求本身不是幂等的,因为多次执行相同的POST请求可能会导致服务器上的资源状态发生不同的变化(例如,多次提交表单可能会导致数据库中插入多条记录)。然而,在实际应用中,可以通过设计来确保某些POST操作是幂等的。
POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而POST是有请求内容的。POST请求最多用于向服务器发送大量的数据。GET虽然也能发送数据,但是有大小(长度)的限制,并且GET请求会将发送的数据显示在浏览器端,而POST则不会,所以安全性相对来说高一点。
例如,上传文件、提交留言等,只要是向服务器传输大量的数据,通常都会使用POST请求。一个经典HTTP POST请求如下:
POST /login.php HTTP/1.1
HOST:www.xxser.com
Content-Length:26
Accept:text/html,applicationxhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin:http://home.2cto.com
User-Agent:Mozilla/5.0 (windows NT 6.1) Applewebkit/537.17 (KHTML,like Gecko)
Chrome/24.0.1312.57 safari/537.17 SE 2.X MetaSr 1.0
Content-Type:application/x-www-form-urlencoded
Accept-Language:zh-CN,zh;q=0.8
Accept-Charset:GBK,UTF-8;q=0.7,*;q=0.3
User=admin&pw=123456789
用POST方法向服务器请求login.php,并且传递参数user=admin&pw=123456789。
(4)PUT
用途:用于向服务器发送数据以更新现有资源。如果资源不存在,则创建新的资源。
特点:与POST类似,但PUT请求通常是幂等的,即多次执行相同的PUT请求不会产生不同的结果。PUT请求也包含请求体,其中包含了要更新的数据。
PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请求指定的资源不存在,将会创建这个资源,且数据位请求正文,请求如下:
PUT /input.txt
HOST:www.xxser.com
Content-Length:6
这段HTTP PUT请求将会在主机根目录下创建input.txt,内容为123456。通常情况下,服务器都会关闭PUT方法,因为他会为服务器建立文件,属于危险的方法之一。
(5)DELETE
用途:用于请求服务器删除指定的资源。
特点:DELETE请求不包含请求体,只通过URL指定要删除的资源。DELETE请求是幂等的,因为多次执行相同的DELETE请求应该产生相同的结果(即资源被删除)。
DELETE方法用于请求源服务器删除请求的指定资源。服务器一般都会关闭此方法,因为客户端可以进行删除文件操作,属于危险方法之一。
(6)TRACE
用途:用于回显服务器收到的请求,主要用于测试和诊断。
特点:TRACE请求会将服务器收到的请求原样返回给客户端,包括请求头、请求体等。TRACE请求通常用于检查请求在服务器中的处理路径和状态。
TRACE方法被用于激发一个远程的应用层的请求消息回路,也就是说,回显服务器收到的请求。TRACE方法允许客户端去了解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。但此方法非常少见。
(7)CONNECT
用途:用于建立一个到服务器的隧道,通常用于HTTPS连接。
特点:CONNECT请求通常不是由客户端直接发出的,而是由代理服务器在需要时发出的。它允许客户端通过代理服务器与服务器建立加密的TCP连接。
HTTP1.1协议规范保留了connect方法,此方法是为了用于能动态切换到隧道的代理。
(8)OPTIONS
用途:用于获取服务器针对特定资源所支持的HTTP请求方法。也可以用于检查服务器性能或进行跨域资源共享(CORS)的预检请求。
特点:OPTIONS请求不包含请求体,服务器在响应中会列出针对请求资源的所有支持的方法。
OPTIONS方法被用于请求获得由URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。HTTP OPTIONS请求如下:
OPTIONS /HTTP/1.1
HOST:www.xxxser.com
Allow:OPTIONS,TRACE,GET,HEAD,POST
Server:Microsoft-IIS/7.5
Public:OPTIONS,TRACE,GET,HEAD,POST
X-Powerd-By:ASP.NET
Date:Sun,14 Jul 2013 15:50:58
Content-Length:0
(9)PATCH
用途:用于对资源进行部分修改。与PUT不同,PATCH请求只更新资源的部分内容,而不是替换整个资源。
特点:PATCH请求包含请求体,其中指定了要修改的资源部分和新的值。PATCH请求通常不是幂等的,因为多次执行相同的PATCH请求可能会产生不同的结果(取决于修改的内容和资源的当前状态)。
以上为HTTP/1.1标准方法,但HTTP中的请求方法还不止这些,例如WebDAV。
1.1.2.3HTTP协议版本与请求方法
HTTP/1.0:定义了GET、POST和HEAD三种请求方法。
HTTP/1.1:在HTTP/1.0的基础上增加了PUT、DELETE、OPTIONS、TRACE和CONNECT等请求方法,并引入了持久连接(Keep-Alive)等特性。
HTTP/2:基本沿用了HTTP/1.1的请求方法,但对协议进行了优化,提高了传输效率和速度。引入了多路复用、头部压缩和服务器推送等新特性。
HTTP/3:基于QUIC协议实现,继续使用HTTP/2的请求方法,并改进了传输层,使用UDP代替TCP以提高传输速度和可靠性。
三、HTTP状态码
当客户端发出HTTP请求,服务器接收后,会向客户端发送响应信息,其中,HTTP响应中的第一行中,最重要的一点就是HTTP状态码,内容如下:
HTTP/1.1 200 OK
此状态码为200,在HTTP协议中表示请求成功。HTTP协议中的状态码由三位数字组成,第一位数字定义了响应的类别,且只有以下5种:
①、1xx:信息提示,表示请求已成功被接收,继续处理。其范围为100~101。
②、2xx:成功,服务器成功地处理了请求,其范围为200~206
③、3xx:重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,
并告诉客户端新的资源地址位置。这时,浏览器将被重新对新资源发起请求。
其范围为300~305。
④、4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的URL。其范围为400~415。
⑤、5xx:有时候客户端发送了一条有效请求,但web服务器自身却出错了,可能是web服务器运行出错了,或者网站都挂了。5xx就是用来描述服务器内部错误的,其范围为500~505。
常见状态码描述如下:
200:客户端请求成功,是最常见的状态
302:重定向。
404:请求资源不存在,是最常见的状态。
401:请求未经授权。
400:客户端请求有语法错误,不能被服务器所理解。
403:服务器收到请求,但是拒绝提供服务
500:服务器内部错误,是最常见的状态。
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
四、URI和URL的区别
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
URI:Uniform Resource Identifier 统一资源标识符
URL:Uniform Resource Location 统一资源定位符
URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。
URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。
五、HTTPS
5.1.HTTP中存在的问题
请求信息明文传输,容易被窃听截取。
数据的完整性未校验,容易被篡改
没有验证对方身份,存在冒充危险
5.2.HTTPS简介
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
5.3.SSL简介
SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
5.4.HTTPS和HTTP的区别
HTTP(HyperText Transfer Protocol)
定义:HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是Web上数据交换的基础。
特点:
明文传输:HTTP协议在传输数据时不对数据进行加密,因此存在数据被窃听的风险。
无状态:HTTP协议本身是无状态的,即服务器不保留客户端的状态信息。
可扩展:HTTP/1.1之后,通过扩展头部字段等方式支持了更多的功能。
HTTPS(HyperText Transfer Protocol Secure)
定义:HTTPS是HTTP的安全版本,在HTTP的基础上增加了SSL/TLS协议层,用于加密客户端和服务器之间的数据传输。
特点:
数据加密:HTTPS使用SSL/TLS协议对数据进行加密和解密,确保数据传输的安全性。
验证身份:HTTPS还通过证书机制验证服务器的身份,防止中间人攻击。
安全性更高:由于数据加密和身份验证的机制,HTTPS比HTTP更加安全。
码字不易,您的点赞是对我最大的鼓励和支持!