Learn

284 篇文章分类:全部
网络

HTTP 和 HTTPS 的区别

打开网站时,浏览器和服务器会交换数据。

Web 交换数据使用的基本机制是 HTTP。 而为了安全进行 HTTP 通信而使用的机制是 HTTPS。

HTTPS 并不只是“加密通信内容的机制”。 重要的是,它能让通信途中第三方的偷看、篡改、冒充更难发生。

因此,HTTPS 中主要有下面三点很重要。

  • 让通信内容在途中不容易被读取
  • 让通信内容在途中不容易被篡改
  • 更容易确认通信对象是否是预期对象

也就是说,HTTPS 是应对中间人攻击时非常重要的机制。

不过,HTTPS 不是匿名化技术。 即使使用 HTTPS,访问也会到达连接目标网站。 另外,访问源 IP 地址、、登录状态、访问日志等会作为另一个问题留下。

本文将整理说明 HTTP 和 HTTPS 的区别、HTTPS 会保护什么,以及即使使用 HTTPS 仍可能可见的内容。

什么是 HTTP

HTTP 是用于在 Web 上交换数据的通信规则。

用浏览器打开网站时,浏览器会向服务器发送请求。 例如“请发送这个页面的 HTML”“我想取得这张图片”等请求。

服务器会对这个请求返回 HTML、图片、CSS、JavaScript 等数据。

这种用于浏览器和服务器之间请求与响应交换的机制就是 HTTP。

HTTP 本身是 Web 通信的基础。 但是,仅靠 HTTP 没有保护通信内容的机制。

HTTP 中,通信内容不会加密。 因此,通信路径上的第三方有可能读取内容、改写内容,或冒充成假的通信对象。

HTTP 的弱点说明
容易被偷看通信内容不加密,因此有在途中被读取的危险
容易被篡改页面内容或发送内容有在通信途中被改写的危险
容易被冒充很难确认通信对象是否真的是预期服务器

例如,如果用 HTTP 的登录表单发送密码,密码可能在通信途中被看到。 此外,用 HTTP 读取的页面内容可能在途中被改写,插入假的输入表单或恶意脚本。

HTTP 是 Web 通信的基础,但原样使用会有很大的安全问题。

什么是 HTTPS

HTTPS 是在安全通信通道中进行 HTTP 通信的机制。

更准确地说,HTTPS 是在名为 TLS 的安全通信层之上使用 HTTP。 本文不会处理 TLS 的细节机制,但理解 HTTPS 时,可以把它看作“用 TLS 保护 HTTP 的通信内容”。

HTTPS 中重要的是下面三点。

要素作用说明
加密让通信内容不容易被读取让通信途中的第三方难以直接读取密码或表单内容
篡改检测能够发现通信内容被改写如果途中数据被改变,就不容易作为正确通信被接受
通信对象确认确认是否在与预期对象通信使用证书等确认连接目标服务器是否是正当对象

HTTPS 的强度在于这三点组合在一起。

仅有加密并不充分。 例如,即使通信内容被加密,如果攻击者能冒充成假服务器并让使用者连接到该假服务器,就不能说安全。

因此,HTTPS 不仅保护通信内容,也会使用确认机制,确认正在通信的对象是否是预期网站。

HTTP 和 HTTPS 的区别

HTTP 和 HTTPS 的区别,不只是 URL 看起来是 http[:]// 还是 https[:]//

HTTP 中,浏览器和服务器的通信不会受到保护。 HTTPS 中,会在浏览器和服务器之间建立安全通信通道,并在其中进行 HTTP 交换。

项目HTTPHTTPS
URL 开头http[:]//https[:]//
通信内容加密不加密加密
通信内容偷看对策
通信内容篡改对策容易检测篡改
通信对象确认基本较弱使用证书等确认
对中间人攻击的耐性
匿名化不进行不进行

把 HTTPS 理解为“只是给 HTTP 加了加密”稍微不够。 更准确地说,它是把 HTTP 通信包在安全通信通道中,使偷看、篡改、冒充更难发生的机制。

什么是中间人攻击

中间人攻击是指第三方进入浏览器和服务器之间,偷看通信、改写通信,或冒充通信对象的攻击。

使用者以为自己在访问真正的网站,但通信途中攻击者可能正在查看内容。 攻击者也可能改写通信内容,插入假的登录表单或恶意代码。

HTTP 对这类攻击较弱。

HTTPS 会加密通信内容,检测篡改,并确认通信对象。 因此,中间人攻击更难成立。

攻击者想做的事HTTP 时HTTPS 时
读取通信内容有被读取的危险很难作为明文读取
偷看密码风险高通信途中不容易偷看
改写页面内容有被改写的危险篡改容易被检测
让使用者连接假服务器使用者不容易察觉通过证书验证更容易防止
冒充通信对象相对容易没有正当证书则困难

HTTPS 的本质就在这里。

重要的不只是“通信内容被加密”, 还包括能够确认“途中内容是否被改写” 以及“正在通信的对象是否是预期对象”。

HTTPS 会保护什么

HTTPS 主要保护的是在浏览器和服务器之间流动的 HTTP 通信内容。

例如,下面这些信息会因为 HTTPS 而在通信途中更不容易被读取。

被保护的内容说明
密码登录表单中输入的密码在通信途中更不容易被读取
表单输入内容姓名、邮件地址、咨询内容等在通信途中更不容易被读取
页面内容显示页面的内容在通信途中更不容易被读取或篡改
请求内容浏览器发给服务器的内容更容易受到保护
响应内容服务器返回给浏览器的内容更容易受到保护
Cookie通信中收发的 Cookie 更不容易在途中被偷看

特别重要的是密码和 Cookie。

Cookie 有时用于维持登录状态或识别使用者。 如果 Cookie 在通信途中被盗,有些情况下会有被冒充本人访问的危险。

HTTPS 中,Cookie 也会在加密通信通道内发送,因此通信途中更不容易被偷看。

不过,使用 HTTPS 并不意味着 Cookie 相关问题全部解决。 Cookie 的保存方法、网站侧设置、浏览器环境、终端安全性等会作为其他问题留下。

即使是 HTTPS,内容也会到达连接目标服务器

HTTPS 是从通信途中的第三方那里保护内容的机制。 它不是对连接目标网站隐藏内容的机制。

例如,在 HTTPS 登录表单中输入密码时,密码在通信途中不容易被读取。 但是,这些信息会到达执行登录处理的网站服务器。

这是理所当然的。 因为服务器要处理登录,就必须接收发送来的信息。

HTTPS 保护的范围主要是通信路径上。

对象HTTPS 的作用说明
通信途中第三方强力防护对象更容易防止偷看、篡改、冒充
连接目标服务器通信对象请求内容会到达服务器
使用者的 IP 地址不直接隐藏仅靠 HTTPS 不会隐藏访问源 IP 地址
登录中的账号不直接隐藏登录中的行为会与账号关联

也就是说,HTTPS 是“为了防止途中的偷看和篡改的机制”。 它不是“对连接目标隐藏自己信息的机制”。

即使是 HTTPS,仍可能可见的内容

即使使用 HTTPS,也并不是所有信息都会隐藏。

通信内容会受到保护。 但是,访问源相关信息、连接目标相关信息、网站侧接收的信息,是另一个问题。

信息可能可见的对象说明
访问源 IP 地址连接目标服务器等网站侧可以把握从哪个 IP 地址访问
访问时刻连接目标服务器等何时访问可能作为日志记录
请求内容连接目标服务器即使是 HTTPS,内容也会到达发送目标服务器
Cookie连接目标网站有时用于识别同一使用者或浏览器
登录状态连接目标网站如果已登录,行为会与账号关联
访问日志连接目标网站看过哪个页面、做过什么操作可能被记录
浏览器信息连接目标网站User-Agent 等信息可能被发送
连接目标相关信息因通信环境而异即使通信内容加密,也可能推测正在连接哪个网站

这里重要的是,把“通信内容”和“通信事实”分开。

HTTPS 会保护通信内容。 但是,它不会自动隐藏从哪个 IP 地址访问、何时访问、使用哪个账号登录等信息。

另外,在 HTTPS 中,完整 URL 并不是总是会被第三方完全看见。 页面路径和表单内容等会作为通信内容受到保护。 另一方面,与连接目标域名相关的信息,可能因通信环境而可见。

因此,使用 HTTPS 并不意味着访问痕迹和识别信息也会消失。

HTTPS 不是匿名化技术

HTTPS 不是匿名化技术。

HTTPS 的目的主要是下面三点。

  • 让通信内容在途中不容易被读取
  • 让通信内容在途中不容易被篡改
  • 更容易确认通信对象是否是预期对象

这和匿名化是不同的话题。

思考匿名性时,需要分开“通信内容是否受到保护”和“谁访问了是否被隐藏”。

HTTPS 与前者强相关。 但是,它不会直接解决后者。

视角HTTPS 能否解决说明
通信内容偷看对策在通信路径上很强让途中不容易读取内容
通信内容篡改对策在通信路径上很强让途中不容易改写内容
通信对象确认可以使用证书等确认连接目标
IP 地址隐藏不能仅靠 HTTPS 不会隐藏访问源 IP 地址
Cookie 识别不能网站侧识别是另一个问题
登录状态隐藏不能登录中的行为会与账号关联
访问日志删除不能网站侧日志保存与 HTTPS 是另一个问题

“HTTPS 就是匿名”这种理解是错误的。

HTTPS 是让通信更安全的技术。 它不是用于产生匿名性的技术。

正确理解 HTTPS 的视角

要正确理解 HTTPS,需要分开思考“从谁那里保护什么”。

HTTPS 主要防护的对象是通信路径上的第三方。

例如,同一 Wi-Fi 中的第三方、通信路径上的设备、恶意中继者等,HTTPS 会让他们更难偷看、篡改通信内容,或冒充成假对象。

另一方面,连接目标网站是通信的最终对象。 因此,发送的内容会到达网站侧。

对象HTTPS 容易防止的事HTTPS 无法防止的事
通信途中第三方偷看、篡改、冒充终端本身被入侵
连接目标网站通信途中泄露网站侧记录日志或账号识别
同一 Wi-Fi 使用者偷看通信内容访问目标推测并不会完全消失
假服务器没有正当证书时更容易被检测使用者忽略警告时的危险

HTTPS 是非常强力的机制,但并非万能。

例如,浏览器显示证书相关警告时,如果无视警告继续前进,HTTPS 带来的安全性会大幅下降。 另外,如果终端本身感染恶意软件,即使使用 HTTPS 通信,输入内容也可能在终端侧被盗。

HTTPS 对网络上的偷看、篡改、冒充是强防御。 但是,终端安全性、网站侧管理、账号处理、Cookie、日志等需要另外考虑。

总结

HTTP 是用于在 Web 上交换数据的基本机制。 但是,仅靠 HTTP,通信内容不会加密,有在通信途中被偷看或篡改的危险。

HTTPS 是在安全通信通道中进行 HTTP 通信的机制。

HTTPS 的重要作用有下面三点。

  • 让通信内容在途中不容易被读取
  • 让通信内容在途中不容易被篡改
  • 更容易确认正在通信的对象是否是预期对象

因此,HTTPS 是应对中间人攻击时非常重要的机制。

不过,HTTPS 不是匿名化技术。 即使使用 HTTPS,请求也会到达连接目标网站。 另外,访问源 IP 地址、Cookie、登录状态、访问日志等会作为其他问题留下。

HTTPS 是让通信更安全的技术。 特别是,它对防止通信路径上的偷看、篡改、冒充很重要。

但是,它不是隐藏谁访问了的技术。

思考匿名性时,需要分开 HTTPS 能保护的范围和 HTTPS 不能保护的范围。 HTTPS 是重要前提,但仅靠 HTTPS 并不会让匿名性成立。

相关文章