理解 HTTP(三):透过 HTTP 上网安全吗?浅谈网路安全、HTTPS、中间人攻击

聊了 HTTP 的基本概念(网站内容是怎麽被下载到电脑里的?Method、Status Code)後,我们今天接着聊聊关於网路安全的一些小知识吧。

透过 HTTP 上网安全吗?

你上的网站是「安全」的吗?

现在的浏览器对於安全性的提醒都蛮完善了,拿 Chrome 来说,当你浏览某个网站时,可以看看网址列是否有提醒你此网站是否安全。

鸟哥的 Linux 私房菜
*鸟哥的 Linux 私房菜

例如鸟哥的 Linux 私房菜,目前用浏览器查看的话,会提醒你这是个「不安全」的网站(但还是相当推这个学习资源),在此网站输入较为机密的讯息,如密码、信用卡号等等可能会有泄漏的风险。

这边的「安不安全」代表在资料传输的过程中安不安全,是否可能被中间人撷取讯息,并不代表这个网站的服务器安全性是否够高。

MITM 中间人攻击

我们在前面聊过路由,知道在网路上传送讯息到某个 IP 位置中间会经过许许多多节点。

也就是说当某个人 Alice 透过 HTTP 上网时,连到 Bob 的服务器,如果中间经过的某个节点是个坏人 Eve,他就能把你的封包打开来偷看一下,继续传给下一个节点,Alice 和 Bob 却浑然不知,完全没有隐私可言。

中间人攻击
*中间人攻击

这就是所谓的中间人攻击(Man-in-the-middle attack,简写成 MITM attack)。

那这可怎麽办?能不能绕过 Eve 改走其它节点呢?答案是没用的,任何一个节点都能看到你封包里面的内容,如果要在上网时不让别人看到你的内容,在传输时保证安全性,就得靠 HTTPS 这个协定的。

何谓 HTTPS?为什麽 HTTPS 是安全的?

在 HTTP 之後加一个 S 的协定 HTTPS 是什麽?这个 S 代表的是 Secure 的意思,也就是安全的 HTTP。

和 HTTP 相比,HTTPS 如何做到传输时更安全的呢?

加密,我加了密。

HTTPS 透过「传输层安全性协定」(TLS, Transport Layer Secure,前身为 SSL, Secure Sockets Layer)来进行封包的加密,在 TCP 送出封包之前先加密,收到时先解密。

google.com
*google.com

透过 HTTPS 协定提供加密传输通道的网站,就会是 https:// 开头。浏览器也会给这个网站一个「锁头」表示在此网站送出敏感讯息,在传输时是安全的。

但要让网站获得这个锁头,不单单是透过 HTTPS 协定加密解密,还包含「凭证」的相关资讯就是,至於凭证为何,我们待之後聊。

资料是安全的,但网址上和网址上的资料会被偷看到吗?

我们了解到 HTTPS 所使用的 TLS 这个协定是介於 HTTP 和 TCP 之间的,我们传输的或是从网站得到的回应都会经过加密,有一定的保护存在。

那麽网址呢?或是我在网址後面似乎也有看到一些参数像是 https://xxx?name=123 中的 name=123 这类的资讯,是否也会被保护呢?

简单一点的答案是,会的。

无论是 HTTP 的哪种 Method,都会被加密,用 HTTP GET 的加入的额外资讯称做 parameters,例如 name=123 就是其中一个 parameter,自然也会被加密。

但是你浏览的网站是什麽网站,就不见得是可以隐藏的了。除了你送的目的 IP 位置是以明文的方式显示,在透过网址转成 IP 位置所需要用的 DNS 这个服务,也会透露出你上了什麽网站。

因此,就算删掉你浏览器中的浏览记录或使用无痕模式上网,你的 Router,或是 IPS 还是会记录相关的资讯唷!

参考资料

  1. Wiki - HTTPS
  2. Wiki - 中间人攻击
  3. Wiki - TLS
  4. StackOverflow - Are HTTPS URLs encrypted?

<<:  大共享时代系列_018_共享爬山趣

>>:  Day 22 透过程序快速布署云上资源

新手学习JavaScript:day29 - Todolist(2)

嗨!大家好,昨天我们做了新增以及划掉的功能,今天让我们来完成删除跟切换标签,最後让完成的任务进入到完...

Day 29: Dynamic Programming, DP

这是什麽 Memoization + Divide and Conquer = Dynamic Pr...

2.4.3 Design System - Banner

是人都会有不方便的时候 有时候事情出错或没有照原本预期的方向走 可能都有难言之隐 就好像「火神的眼...

Day 27 - 强化学习 Reinforcement Learning(1)

马可夫决策过程 Markov decision process MDP 在概率论和统计学中,马可夫决...

iOS Swift TodoList ( 画面部分 no code ) Part1

前言: 哈罗~~此篇是我第一篇文,跟其他人一样纪录程序学习过程,而swift也是我最近在学习的新语言...