当前位置: 首页 > news >正文

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

近年来,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全变得越来越重要。这促使网络传输协议从 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 到 HTTPS 再到 HSTS:网站安全的演变与实践

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

Qt的跨平台介绍

在实际开发中,Ubuntu 使用 Qt 编译并跨平台到 Windows 的场景并不算特别常见,但在一些特定情况下是非常有用的,尤其是在开发需要支持多个平台的跨平台应用时。这种方式的应用主要体现在以下几个方面: Linux 环境下开发 Windows 应…...

数据库DQL

DQL 语法 SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段列表 HAVING分组后条件列表 ORDER BY排序字段列表 LIMIT分页参数 基本查询 查询多个字段 SELECT 字段1,字段2,字段3,... FROM 表名; SELECT * FROM 表名; 设置别名 SELECT 字段1 [AS 别名1],字段2 …...

Am I Isolated:一款安全态势基准测试工具

基于Rust的容器运行时扫描器作为一个容器运行,检测用户容器运行时隔离中的漏洞。 它还提供指导,帮助用户改善运行时环境,以提供更强的隔离保证。 容器的现状是它们并不包含(隔离)。 容器隔离的缺失在云原生环境中有…...

Unity性能优化 -- 性能分析工具

Stats窗口Profiler窗口Memory Profiler其他性能分析工具(Physica Debugger 窗口,Import Activity 窗口,Code Coverage 窗口,Profile Analyzer 窗口,IMGUI Debugger 窗口) Stats 统级数据窗口 game窗口 可…...

【微信小程序】基本语法

一、导入小程序 选择代码目录 项目配置文件 appid 当前小程序的 AppIDprojectname 当前小程序的项目名称 变更AppID(视情况而定,如果没有开发权限时需要变更成个人的 AppID) 二、模板语法 在页面中渲染数据时所用到的一系列语法叫做模板…...

go中的类型断言详解

在Go语言中,类型断言(Type Assertion)是一种将接口类型的变量转换为具体类型的机制。类型断言允许我们从接口类型的变量中提取出具体的值,以便访问具体类型的方法或属性。类型断言的语法如下: value, ok : interfaceV…...

vite构建的react程序放置图片

在 Vite 中,将图片放置在 public 文件夹中可以直接使用相对路径(如 /logo.png)的原因主要与 Vite 的构建和资源处理方式有关。以下是详细的解释: 1. 公共访问性 public 文件夹中的文件在构建过程中不会被 Vite 处理或哈希化。这…...

学习事件循环

本文内容由智谱清言产生。 什么是事件循环? 事件循环(Event Loop)是一个编程概念,特别是在异步编程和GUI(图形用户界面)应用程序中非常常见。它是用来处理和管理事件(如用户输入、计时器事件、…...

终端NuShell git权限异常处理

使用nushell git,关联老的秘钥文件 D:\phpstudy_pro\WWW\xmh\backend|10-312> mkdir d:\Users\Administrator\.ssh PC-20240719ZOSM||2411063145840 D:\phpstudy_pro\WWW\xmh\backend|10-312> cp -r c:\U…...

Mybatis Plus 集成 PgSQL 指南

“哲学家们只是用不同的方式解释世界,而问题在于改变世界。” ——卡尔马克思 (Karl Marx) 解读:马克思强调了实践的重要性,主张哲学不仅要理解世界,更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM ,并且使…...

Rust常用数据结构教程 Map

文章目录 一、Map类型1.HashMaphashMap的简单插入entry().or_insert()更新hashMap 2.什么时候用HashMap3.HashMap中的键 二、BTreeMap1.什么时候用BTreeMap2.BTreeMap中的键 参考 一、Map类型 键值对数据又称字典数据类型 主要有两种 HashMap - BTreeMap 1.HashMap HashM…...

<el-popover>可以展示select change改变值的时候popover 框会自动隐藏

一、问题定位 点击查看详细链接 element-plus 的 popover 组件,依赖 tooltip 组件;当 tooltip 的 trigger 的值不是 hover 时,会触发 close 事件;下拉框的 click 事件,触发了 tooltip 组件的 close 事件 总结一下&am…...

SQLI LABS | Less-37 POST-Bypass mysql_real_escape_string

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-37/ 是一个登…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

Module 16 Wire Editing 这个章节的学习目标是学习如何在innovus中手工画线,切断一根线,换孔,更改一条net shape的layer和width等等。这个技能是每个数字IC后端工程师必须具备的。因为项目后期都需要这些技能来修复DRC和做一些手工custom走线…...

深度学习:GLUE(General Language Understanding Evaluation)详解

GLUE(General Language Understanding Evaluation)详解 GLUE(General Language Understanding Evaluation)是一个用于评估和比较自然语言理解(NLU)系统的综合基准测试。它包括了一系列的任务,旨…...

基于Multisim直流稳压电源电路±9V、±5V(含仿真和报告)

【全套资料.zip】直流稳压电源电路9V、5VMultisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 一般直流稳压电源都使用220伏市电作为电源,经过变压、整流、滤波后给稳压电路进行稳压…...

Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?

直接区别: configureWebpack项直接覆盖同名配置;chainWebpack项直接修改默认配置。 configureWebpack配置: // vue.config.js module.exports {configureWebpack: {plugins: [new MyAwesomeWebpackPlugin()]} }该代码段中的对象将会被web…...

ubuntu主机搭建sysroot交叉编译环境

ubuntu主机搭建sysroot交叉编译环境 主机是 ubuntu22.04 x86-64 hostubuntu22.04host-archx86-64host-cpui9-13900k 目标板是香橙派5b ,ubuntu22.04,aarch64 ,cpu rk3588s targetubuntu22.04target-archaarch64target-cpurk3588s 安装 qemu-user-static 进入 …...

Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...

全文链接:https://tecdat.cn/?p38195 股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...