http 与 https 汇总

文章目录

http 与 https

HTTP(超文本传输协议)介绍

1. 基本概念

HTTP(Hypertext Transfer Protocol)即超文本传输协议,是互联网上应用最为广泛的一种网络协议,它是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议。它基于客户端-服务器架构进行通信,客户端(通常是浏览器)向服务器发送请求,服务器接收请求后进行处理并返回相应的响应内容,比如网页、图片、文本文件等。

2. 工作原理
  • 请求阶段:客户端发起一个HTTP请求,请求消息包含请求行(如请求方法,常见的有GET用于获取资源、POST用于提交数据等,还有请求的URL以及协议版本等信息)、请求头(包含各种描述请求的元信息,像客户端可接受的内容类型、语言等)和请求体(对于部分请求方法如POST,会携带要提交的数据)。
  • 响应阶段:服务器接收到请求后,会返回一个HTTP响应。响应消息包括响应行(包含协议版本、状态码及状态描述,例如 200 OK表示请求成功处理,404 Not Found表示请求的资源未找到等)、响应头(包含如服务器类型、响应内容的类型、长度等信息)以及响应体(即实际要返回给客户端的内容,比如HTML页面的代码等)。
3. 特点
  • 简单快速:其协议格式比较简单,请求和响应的消息结构清晰易懂,便于实现和解析,能快速完成一次通信交互。
  • 灵活:可以传输多种类型的数据,通过在请求头和响应头中设置相应的类型标识,能处理文本、图片、音频、视频等不同格式的资源。
  • 无状态:服务器不会记录客户端之前的请求状态,每一次请求对于服务器来说都是独立的,这种特性使得服务器实现相对简单,但在一些需要保持用户登录状态等场景下,往往需要借助额外的技术(如Cookie、Session等)来维持状态。
4. 应用场景
  • 浏览普通网页:大量的资讯类网站、博客等,用户通过浏览器访问这些网站查看文章、图片等内容时,基本都是基于HTTP协议来传输网页数据的,比如常见的新浪、网易等新闻网站的内容页面获取。
  • 获取静态资源:像网站中的图片、样式表(CSS文件)、脚本文件(JavaScript文件)等静态资源,在浏览器请求加载时,也是通过HTTP协议从服务器端传输到客户端浏览器进行展示的。

HTTPS(超文本传输安全协议)介绍

1. 基本概念

HTTPS(Hypertext Transfer Protocol Secure)即超文本传输安全协议,是在HTTP的基础上加入了SSL/TLS(Secure Sockets Layer/Transport Layer Security,安全套接层/传输层安全协议)加密协议,通过加密通信和身份验证等手段,为网络通信提供了安全性保障,使得数据在传输过程中不易被窃取、篡改或伪造。

2. 工作原理
  • 证书验证:客户端向服务器发起连接请求后,服务器首先会向客户端发送其数字证书,该证书包含了服务器的公钥以及一些认证机构(CA,Certificate Authority)对服务器身份验证的相关信息。客户端会通过内置的CA根证书来验证服务器证书的合法性,确认是否信任该服务器。
  • 密钥协商:在验证通过后,客户端和服务器利用非对称加密算法(基于服务器的公钥等)进行对称加密密钥的协商,协商出的对称加密密钥后续用于对实际传输的数据进行加密和解密,对称加密在大量数据传输时效率相对较高。
  • 数据加密传输:之后双方使用协商好的对称加密密钥对要传输的HTTP数据(请求和响应内容)进行加密,使得数据在网络传输过程中以密文形式存在,到达对方后再用对应的密钥解密还原数据进行处理。
3. 特点
  • 安全性高:通过加密防止数据被窃听,利用数字证书验证身份防止中间人攻击等,保障了通信双方的真实性以及数据的保密性和完整性。
  • 可靠性好:在安全的通信基础上,能稳定地传输数据,让涉及敏感信息的交互可以可靠地进行,不易出现因安全问题导致的数据异常情况。
  • 信任传递:由于数字证书是由权威的CA机构颁发的,在整个互联网信任体系下,能让客户端方便地确认与之通信的服务器是否是合法可信的。
4. 应用场景
  • 电商交易:在网上购物过程中,用户登录电商平台、填写收货地址、支付等涉及大量个人隐私信息(如账号密码、银行卡信息等)的环节,都需要通过HTTPS协议来保障数据安全,像淘宝、京东等电商平台都是使用HTTPS进行此类关键交互的。
  • 金融服务:银行的网上银行、手机银行等业务,用户登录、转账、查询账户余额等操作涉及高度敏感的金融数据,必须采用HTTPS协议,防止用户资金相关信息泄露,确保交易安全。
  • 登录认证:各类需要用户登录的平台,尤其是涉及重要个人信息或者有商业价值账号的登录场景,比如社交平台(微信、QQ等)、企业办公软件等,通过HTTPS保障登录时用户名和密码等信息的安全传输,防止账号被盗用。

HTTP协议的工作原理

HTTP协议的工作原理主要涉及以下几个阶段:

请求阶段
  • 构建请求消息:客户端(通常为浏览器)发起HTTP请求时,会构建一个请求消息。这个请求消息主要由三部分构成。

    • 请求行:包含请求方法(如常见的GET用于获取资源,POST用于向服务器提交数据,PUT用于更新资源,DELETE用于删除资源等)、请求的URL(即统一资源定位符,明确要访问的资源在服务器上的位置)以及所遵循的HTTP协议版本(比如HTTP/1.1或HTTP/2等)。例如"GET /index.html HTTP/1.1",就表明使用GET方法请求服务器根目录下的index.html文件,遵循HTTP/1.1协议版本。
    • 请求头:包含众多描述请求的元信息。比如"User-Agent"字段会标明客户端的类型及版本(像浏览器的具体名称和版本号等),让服务器知道是何种客户端在发起请求;"Accept"字段用于告知服务器客户端能够接受的响应内容的类型(如text/html表示可以接受HTML格式的内容、image/png表示能接受PNG格式的图片等);还有"Cookie"字段(如果存在的话)会携带之前服务器设置在客户端的一些会话相关信息,用于维持用户在网站中的状态等;"Content-Type"字段(对于有请求体的请求方法)会说明请求体中数据的类型等。
    • 请求体:对于部分请求方法(像POST、PUT等)才有请求体。例如在使用POST方法提交表单数据时,请求体中就会包含用户在表单中填写的各项信息,按照一定的格式(如常见的application/x-www-form-urlencoded格式对数据进行编码后存放)进行组织。
  • 发送请求:客户端将构建好的请求消息通过网络发送给目标服务器,发送过程会遵循TCP/IP协议栈的相关规则,先将HTTP请求消息进行层层封装,然后通过网络传输到服务器对应的端口(HTTP默认端口是80端口,不过也可以配置为其他端口)。

响应阶段
  • 接收请求并处理:服务器在对应的端口接收到客户端发送的HTTP请求后,会根据请求的内容进行相应的处理。例如,如果是请求一个网页资源,服务器会查找对应的HTML文件;如果是请求执行某个操作(如通过POST请求提交的数据进行数据库更新操作等),服务器会调用相应的业务逻辑代码来处理。
  • 构建响应消息 :服务器处理完请求后,会构建一个响应消息反馈给客户端,同样由三部分组成。
    • 响应行:包含所使用的HTTP协议版本(一般与客户端请求的版本相匹配或者遵循服务器端支持的合适版本)、状态码以及状态描述。常见的状态码如200 OK表示请求已成功处理,服务器成功找到了客户端请求的资源并返回;404 Not Found表示客户端请求的资源在服务器上不存在,无法找到;500 Internal Server Error表示服务器在处理请求过程中出现了内部错误等。例如"HTTP/1.1 200 OK"表明响应遵循HTTP/1.1协议版本,且请求处理成功。
    • 响应头:包含各种描述响应的信息。比如"Server"字段会标明服务器端使用的软件类型及版本(像Apache服务器、Nginx服务器及其对应的版本号等);"Content-Type"字段用于告知客户端响应体中内容的类型,让客户端知晓如何正确解析和展示,例如"Content-Type: text/html"说明响应体是HTML格式的内容;"Content-Length"字段会指出响应体内容的长度(字节数),方便客户端准确接收完整的数据等。
    • 响应体:这是服务器实际要返回给客户端的内容,可能是HTML页面的代码、图片的二进制数据、JSON格式的数据等,具体取决于客户端的请求以及服务器端的处理结果。
  • 发送响应:服务器将构建好的响应消息按照网络协议的要求,通过网络回传给客户端,同样要经过TCP/IP协议栈的层层封装和传输,最终客户端会在对应的端口接收到服务器发来的响应消息。
客户端解析处理

客户端接收到服务器发送的响应消息后,会首先按照网络协议进行解包,然后解析响应消息的各个部分。根据响应头中的"Content-Type"等信息,对响应体内容进行相应的处理。例如,如果是HTML格式的内容,浏览器会进行渲染展示出网页页面;如果是图片数据,会在网页的相应位置进行图片显示等,从而完成一次完整的HTTP协议通信流程。

协议的安全性

  1. 使用HTTPS协议替代HTTP协议
    • 原理
      • HTTPS(Hypertext Transfer Protocol Secure)是在HTTP基础上加入SSL/TLS(Secure Sockets Layer/Transport Layer Security,安全套接层/传输层安全协议)加密协议。SSL/TLS协议通过非对称加密和对称加密相结合的方式来保证数据传输的安全性。
      • 在连接建立初期,服务器会向客户端发送数字证书。这个数字证书包含服务器的公钥以及一些认证机构(CA,Certificate Authority)对服务器身份验证的相关信息。客户端会通过内置的CA根证书来验证服务器证书的合法性,确认是否信任该服务器。验证通过后,客户端和服务器利用非对称加密算法(基于服务器的公钥等)进行对称加密密钥的协商,协商出的对称加密密钥后续用于对实际传输的HTTP数据(请求和响应内容)进行加密,使得数据在网络传输过程中以密文形式存在,到达对方后再用对应的密钥解密还原数据进行处理。
    • 优势
      • 数据加密:有效防止数据在传输过程中被窃取。例如,在用户通过网络传输银行卡密码等敏感信息时,使用HTTPS加密后,即使数据被拦截,攻击者也无法获取原始的明文信息。
      • 身份验证:通过数字证书验证服务器的身份,防止中间人攻击。例如,当用户访问银行网站时,只有合法的银行服务器才能提供被信任的数字证书,确保用户连接的是真正的银行服务器,而不是伪装的恶意服务器。
  2. 采用HTTP认证机制
    • 基本认证(Basic Authentication)
      • 原理:这是一种简单的认证方式。当客户端请求需要认证的资源时,服务器会返回一个401 Unauthorized状态码,并在响应头的WWW - Authenticate字段中指定认证方式(如Basic)和认证域(realm)。客户端收到后,会弹出一个用户名和密码的输入框,用户输入凭据后,客户端将用户名和密码用Base64编码后放在请求头的Authorization字段中发送给服务器。服务器收到后,解码并验证凭据是否正确。
      • 注意事项:Base64编码只是一种简单的编码方式,不是加密,所以在传输过程中容易被截获和破解。因此,这种方式适用于安全性要求相对较低的场景或者在内部网络等受信任的环境中使用。
    • 摘要认证(Digest Authentication)
      • 原理:它是一种比基本认证更安全的认证方式。当客户端请求资源时,服务器同样返回401 Unauthorized状态码和WWW - Authenticate字段,其中包含摘要认证所需的信息,如realm、nonce(一个随机数)等。客户端根据这些信息和用户的密码计算出一个摘要(使用MD5或其他哈希算法),并将摘要、用户名等信息放在请求头的Authorization字段中发送给服务器。服务器收到后,根据自己保存的用户信息和相同的算法计算摘要,然后与客户端发送的摘要进行比较,以验证用户身份。
      • 优势:因为摘要认证使用哈希算法对密码进行处理,没有在网络中传输明文密码,所以相对基本认证安全性更高。
  3. 对数据进行加密处理后再传输
    • 在客户端加密
      • 原理:在发送HTTP请求之前,使用加密算法(如AES、RSA等)对请求数据进行加密。例如,在一个企业内部的敏感数据传输应用中,客户端可以使用AES对称加密算法对数据进行加密,将加密后的数据发送给服务器。
      • 操作方式:需要在客户端代码中实现加密逻辑,并且服务器端要能够正确接收和处理加密后的数据,通过解密算法将数据还原后再进行后续处理。
    • 在服务器端加密
      • 原理:服务器接收到HTTP请求后,对敏感数据进行加密存储。例如,在一个数据库应用中,服务器接收到包含用户隐私信息的请求后,使用加密算法将这些信息加密后再存入数据库。
      • 操作方式:服务器端的应用程序需要具备加密模块,并且在需要使用这些数据时能够正确地解密。
  4. 使用安全的网络架构和防护设备
    • 防火墙
      • 原理:防火墙可以设置规则,阻止未经授权的外部访问和恶意流量。例如,企业网络中的防火墙可以根据IP地址、端口号、协议类型等信息来过滤HTTP流量,只允许来自特定IP范围的合法客户端访问内部的HTTP服务器,并且可以阻止外部网络对内部服务器的恶意扫描和攻击。
    • 入侵检测系统(IDS)和入侵防御系统(IPS)
      • 原理:IDS可以监测网络中的可疑活动,如异常的HTTP请求模式(如频繁尝试访问不存在的资源可能是扫描行为),并发出警报。IPS不仅可以检测,还可以主动采取措施,如阻断可疑的HTTP连接,防止潜在的攻击进一步发展。
    • 虚拟专用网络(VPN)
      • 原理:VPN通过在公用网络上建立专用网络来进行加密通讯。当客户端通过VPN访问HTTP资源时,数据会在客户端和VPN服务器之间进行加密传输,然后VPN服务器再与目标HTTP服务器进行通信。这样可以隐藏客户端的真实IP地址,并且增加数据传输的安全性,适用于远程办公等场景,员工可以通过VPN安全地访问公司内部的HTTP服务器。

增强HTTP协议的其它方法

  1. 输入验证和过滤
    • 原理
      • 在服务器端对用户输入的内容进行严格验证和过滤。例如,当用户通过HTTP表单提交数据时,服务器可以检查数据的格式、长度、类型等是否符合预期。对于不符合要求的数据,可以拒绝处理或者进行修正。
      • 这可以防止恶意用户通过输入恶意脚本(如SQL注入攻击中的SQL语句、跨站脚本攻击中的JavaScript脚本等)来破坏系统或者窃取数据。
    • 应用场景和示例
      • 在一个Web应用程序的用户注册表单中,对于用户输入的用户名,服务器可以验证其长度是否在合理范围内(如3 - 20个字符),是否只包含字母、数字和一些允许的特殊字符(如下划线)。对于用户输入的密码,除了长度要求外,还可以检查是否包含足够的复杂度(如至少包含一个大写字母、一个小写字母和一个数字)。
      • 在处理用户评论等文本内容输入时,对输入的内容进行HTML标签过滤,防止用户输入恶意的HTML或JavaScript标签来进行跨站脚本攻击。例如,将用户输入的""进行过滤,去除
相关推荐
丁劲犇7 分钟前
让 Win10 上网本 Debug 模式 QUDPSocket 信号&槽 收发不丢包的方法总结
网络·windows·qt·网络协议·udp·qudpsocket·丢包
泰山小张只吃荷园9 分钟前
期末复习-计算机网络篇
java·网络·网络协议·计算机网络·面试
drebander2 小时前
使用 Netty 实现 RPC 通信框架
网络协议·rpc·netty
m0_748247802 小时前
如何使用Node.js快速创建本地HTTP服务器并实现异地远程访问
服务器·http·node.js
泗水长流2 小时前
1.网络知识-IP与子网掩码的关系及计算实例
网络·网络协议·tcp/ip
pcj_8882 小时前
配置Nginx自签名SSL证书,支持HTTPS
nginx·https
Orime小猪3 小时前
CentOS Stream 8 使用 Certbot 配置 HTTPS 证书指南
运维·https
搬砖的果果4 小时前
数据采集,如何选择适合自己的HTTP代理?
网络·网络协议·http
davidson14714 小时前
http网络服务-swift-Alamofire
网络协议·http·swift
乌南竹4 小时前
四十五:HTTP/2特性概述
网络·网络协议·http