从 HTTP 到 HTTPS 再到 HSTS:网站安全的演变与实践

news2024/11/6 13:13:50

近年来,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全变得越来越重要。这促使网络传输协议从 HTTP 发展到 HTTPS,再到 HSTS。本文将详细介绍这些协议的演变过程及其在实际应用中的重要性。

一、HTTP 协议
1.1 HTTP 简介

HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网数据通信的基础,由万维网协会(W3C)和互联网工程任务组(IETF)协调制定。1999年6月发布的 RFC 2616 定义了广泛使用的 HTTP 1.1 版本。

1.2 HTTP 访问过程

HTTP 属于 TCP/IP 模型中的应用层协议。当浏览器与服务器进行通信时,需要先建立 TCP 连接,然后服务器接收浏览器的请求信息,处理后返回相应的信息,最后浏览器接收并解释这些数据。

  • HTTP 1.0 请求模式:每次访问都要单独建立连接,这会造成资源的浪费。
  • HTTP 1.1 请求模式:可以在一次连接中处理多个请求,并且将多个请求重叠进行,提高了效率。
1.3 HTTP 协议特点
  • 简单、快速、灵活:用户发送请求时只需传送请求方法和路径,HTTP 允许传输任意类型的数据对象,协议简单易用,服务器规模小,保证了网络通信的速度。
  • 无连接、无状态:每次连接只处理单个请求,连接完成后断开,传输时间节省。协议对事务处理没有记忆能力,后续请求需要重传数据。
  • 管线化和内容编码:管线化技术使 HTTP 请求比持久性连接更快,内容编码用于减少传输时间。
二、从 HTTP 到 HTTPS
2.1 HTTP 的局限性

尽管 HTTP 协议简单快速,但它存在明显的问题:数据传输是明文的,容易被窃听和篡改。这导致了网站和用户资料的泄密风险,因此需要引入 HTTPS。

2.2 HTTPS 简介

HTTPS(超文本传输安全协议)是在 HTTP 下加入 SSL/TLS 层,从而具有保护数据隐私和完整性、提供网站服务器身份认证的功能。简单来说,HTTPS 是安全版的 HTTP。

2.3 HTTPS 访问过程

HTTPS 在进行数据传输之前会与网站服务器和 Web 浏览器进行一次握手,具体过程如下:

  1. 浏览器发送加密信息:浏览器将支持的加密信息发送给服务器。
  2. 服务器发送证书:服务器选择加密算法和哈希算法,将证书(包括 CA 机构、有效期、公钥、所有者、签名等)发送给浏览器。
  3. 浏览器验证证书:浏览器验证证书的合法性,如果证书受信任,浏览器会生成随机密码并用证书中的公钥加密,然后发送给服务器。
  4. 服务器解密并确认:服务器使用私钥解密密码,验证握手信息的一致性,然后使用密码加密新的握手信息,发送给浏览器。
  5. 浏览器确认握手:浏览器解密并验证握手消息,如果一致,握手过程结束,双方使用对称加密算法进行数据交换。
2.4 HTTPS 加密算法
  • 对称加密:使用同一密钥进行加密和解密,如 DES、AES-GCM、ChaCha20-Poly1305 等。
  • 非对称加密:使用不同的密钥进行加密和解密,如 RSA、DSA、ECDSA、DH、ECDHE 等。
  • 哈希算法:将任意长度的信息转换为固定长度的值,如 MD5、SHA-1、SHA-2、SHA-256 等。
  • 数字签名:在信息后附加经过哈希后的值,证明信息未被修改,如 RSA 签名。
三、从 HTTPS 到 HSTS
3.1 HTTPS 的局限性

尽管 HTTPS 提高了数据传输的安全性,但用户习惯输入域名而不指定协议,浏览器默认使用 HTTP,这可能导致中间人攻击。因此,需要引入 HSTS(HTTP 严格安全传输)。

3.2 HSTS 简介

HSTS 是一种新的 Web 安全协议,通过服务器发送响应头来控制浏览器操作,确保用户始终访问 HTTPS 链接,从而防止中间人攻击。

3.3 HSTS 原理

HSTS 主要通过服务器响应头来控制浏览器操作:

  • 响应头格式Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
  • max-age 参数:设置 HSTS 的有效时间,建议设置为 6 个月。
  • includeSubDomains 参数:可选,表示 HSTS 应用于所有子域名。
  • preload 参数:可选,表示网站已预先加载到浏览器的 HSTS 列表中。
3.4 HSTS 实施步骤
  1. 在服务器响应头中添加 HSTS 响应头

    server {
        listen 443 ssl;
        server_name example.com;
    
        ssl_certificate /path/to/certificate.crt;
        ssl_certificate_key /path/to/private.key;
    
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" always;
    }
    
  2. 设置 max-age 参数:时间设置不宜过长,建议设置为 6 个月。

  3. 用户下次访问时:浏览器会自动进行内部跳转,使用 HTTPS 访问网站。

3.5 HSTS 效果评估

开启 HSTS 后,可以使用 SSL Labs 进行网站安全等级测试,评估安全系数的提升。

  • 开启前等级:A
  • 开启后等级:A+
四、总结

从 HTTP 到 HTTPS 再到 HSTS,网站的安全系数不断提升,有效防止了 DNS 劫持和数据泄密。通过实施 HSTS,可以确保用户始终访问 HTTPS 链接,提高安全性和用户体验。希望本文能为读者提供实用的指导,帮助大家更好地保障网站安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Docker系列】指定系统平台拉取 openjdk:8 镜像

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【含文档+源码】基于SpringBoot+Vue的新型吃住玩一体化旅游管理系统的设计与实现

开题报告 本文旨在探讨新型吃住玩一体化旅游管理系统的设计与实现。该系统融合了用户注册与登录、旅游景点管理、旅游攻略发帖、特色旅游路线推荐、附近美食推荐以及酒店客房推荐与预定等多项功能,旨在为游客提供全方位、一体化的旅游服务体验。在系统设计中&#…

B3735 [信息与未来 2018] 圣诞树

题目描述 圣诞树共有 nn 层,从上向下数第 11 层有 11 个星星、第 22 层有 22 个星星、以此类推,排列成下图所示的形状。 星星和星星之间用绳子连接。第 1,2,\cdots, n - 11,2,⋯,n−1 层的每个星星都向下一层最近的两个星星连一段绳子,最后一…

解决 Hypack 安装不能正常运行的引导及微软 VC++ 运行库 VCRedist

解决 Hypack 安装不能正常运行的引导及微软 VC 运行库 VCRedist 前言1、常见 Hypack 安装不能正常运行的错误1.1、无法打开大地测量参数1.2、无法运行硬件设置和组合 2、从 Hypack 2013 开始,程序安装后,在程序目标目录,有支持目录 Support &…

给大模型研究生一些救命建议

这篇写给大模型方向的研一新生,我呆证看完以后能救你们大命 首先我知道大模型算法工程师这个 title 十分诱人,你们现在也被导师说得一腔热血。 但是,大模型它跟七八年前的 CV、NLP 都不太一样,最不一样的点在哪里呢? 就是LLM …

Oracle基础查询

第一章 数据查询 1.1 单表查询 1.1.1 数据准备 找到分享的sql文件,选中文件,右键进行复制,选中以wateruser用户登录的连接,右键粘贴,然后ok确认,就可以将两个sql文件添加到了Datagrip的工程中,打…

解决com.mysql.jdbc.NonRegisteringDriver内存泄漏问题

1. 问题背景 线上出现内存报警,通过dump文件,MAT分析,发现mysql-connector-java 有内存泄漏问题 2.问题分析 然后看大对象列表,NonRegisteringDriver 对象确实占内存比较多,里面村的数据库连接的虚引用占比较多 3.解…

如何优雅处理异常?处理异常的原则

前言 在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了,我们该如何处理异常,让代码变得更优雅呢? 1 不要忽略异常 不知…

华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面的问题处理

本文记录了华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面,在安装过程中配置选择时,右侧安装按钮不可见,导致安装无法继续的问题处理过程。 一、问题现象 华为2288HV2服务器安装BCLinux8U6时无法显示完整的安装界面,问题…

Qt多边形填充/不填充绘制

1 填充多边形绘制形式 void GraphicsPolygonItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {Q_UNUSED(option);Q_UNUSED(widget);//painter->setPen(pen()); // 设置默认画笔//painter->setBrush(brush()); // 设置默…

Python设计模式探究:单例模式实现及应用解析

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

Linux权限解析:用户、组和权限的协同

​​​​​​​在Linux系统中,权限决定了谁能做什么。本文将指导你如何掌握这些权限,以确保你的系统既安全又高效! 目录 1.shell命令及其运行原理 2.Linu权限的概念 (1) 用户 (2) 切换用户命令su (3) 指令提权命令sudo (4) 什么是权限…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端:JAVA、Solon、easyExcel、FastJson2 前端:vue2.js、js、HTML 模式1:合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

koa项目实战 == 实现注册登录鉴权

一. 项目的初始化 1 npm 初始化 npm init -y生成package.json文件: 记录项目的依赖 2 git 初始化 git init生成’.git’隐藏文件夹, git 的本地仓库 3 创建 ReadMe 文件 二. 搭建项目 1 安装 Koa 框架 npm install koa2 编写最基本的 app 创建src/main.js const Koa…

JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)

单元测试 操作步骤: a.导包import org.junit; b.三个注解 Test Before After c.点击Test 运行就可以了 用在不需要控制台输入的情境下:javaweb,框架项目,微服务项目 供开发人员自己做测试。 package com.page…

四个TikTok万能爆单选品法,第1个超过75%卖家会用!

做TK想爆单至关键的一步就是选品!7分靠选品、3分靠运营,一开始你要把品选错了,再怎么运营都是在浪费时间。接下来分享一些万能选品思路,不管做什么类目的商家都可以参考! 一、热卖品榜单选品 这是一种很常见&#xf…

Linux开发工具——make/Makefile

目录 一、什么是makefile? 二、为什么要有makefile? 三、makefile的使用 1.依赖关系与依赖方法 2.伪目标 3.定义变量 4.特殊符号 四、makefile的执行逻辑 一、什么是makefile? Makefile是一种自动化构建工具,make是一条指…

开发中使用UML的流程_01概述

目录 CIM-1:定义业务流程 CIM-2:分析业务流程 ​CIM-3:定义系统范围 ​PIM-1:分析系统流程 PIM-2:分析业务规则 PIM-3:定义静态结构 PIM-4:定义操作和方法 开发中使用UML的流程,主要分为7部分,具体如下: CIM-1:定义业务流程 定义及分析业务流程是为了尽快理…

前端开发模板Pear Admin Layui

目录 基本资料学习笔记04-Pear-Admin-Layui模板运行05-Pear-Admin-Layui-GIT方式代...06-Pear-Admin与Vue对比 & 07-Pear-Admin与Vue对比补充09-Pear-Admin-CRUD练习-数据库表创建12-Pear-Admin-CRUD练习-引入其它依赖 & 13-Pear-Admin-CRUD练习-三层架构以及常见配置 …

[MySQL#10] 索引底层(1) | Page | 页目录

目录 1. 初识索引 2. 认识磁盘 3. MySQL与磁盘交互基本单位 4. 索引的理解 1. 重谈Page 2. 为什么IO交互要用Page 3. 有主键的表插入数据时的排序 4. 单个Page与多个Page 4.1 单个Page 4.2 多个Page 目录 单Page目录 多Page目录 在看本文之前,可以回顾…