浏览器提示的”不安全”到底是什么?

  • Post author:
  • Post category:其他




0. 前言

3月中旬的某天, 某个小破站突然每篇头条动态下面都冷冷清清, 一个评论都没有了.

我赶忙翻了翻, 在一处看到一则公告: 为响应国家<网络信息内容生态治理规定>, 本站暂时关闭回复, 转发功能.

点开这个公告, 下面还附了这条规定的链接. 出于好奇, 我决定点进去浏览一番.

然后, 我看到了地址栏左侧几个有些扎眼的字:

不安全

.

这个不安全到底指啥? 我点击了它左边的”i”, 结果看到了一行红字:

啥? 这也太吓人了吧, 要是个个网页都这么不安全, 那我不是早就”体无完肤”了吗?

这大概就是所谓的”naked in the cyberspace”?

吓得我赶紧看看平时用的搜索引擎是啥样子的:

在这里插入图片描述

在这里插入图片描述

嗯, 很”安全”, 可以松口气了.


实际上, 大家或许都知道,

这个所谓的安全和不安全, 指的是网站是否采用了SSL

(

S

ecure

S

ockets

L

ayer, 安全套接层)技术进行加密, 不过现在其实应该叫

TLS

(

T

ransport

L

ayer

S

ecurity, 传输层安全性协议), 或者更为人所熟知, 就是

HTTP

(

H

yper

T

ext

T

ransfer

P

rotocol, 超文本传输协议)和

HTTPS

之间的区别, 那个多出来的S就是

S

ecure(安全).

但是, 晚上用手机浏览网页的时候, 搜索引擎的链接左边那个图标又不是令人安心的锁形, 而是那个代表了不安全的”i”, 我点进去一看, 看到了一段微妙的话:

大意是, 虽然网页本身是安全的(用了HTTPS), 但是网页加载的别的资源不是安全的(没用HTTPS), 所以这个网站还是不太安全.

为什么会这样呢?

终于, 正文要开始了.




1. HTTP变成了HTTPS

HTTP设计之初是为了提供一种发布和接收HTML(

H

yper

T

ext

M

arkup

L

anguage, 超文本标记语言)页面的方法. HTML页面记录了这个网站长什么样子, 上面分别有些啥东西, 既可以直接写网页上显示出来的文本, 也可以记录一个地址, 让网页加载的时候再从别的地方请求资源. 但是, HTTP的问题迅速暴露了出来: 不安全. 所以在HTTP发起(1989年)后5年, HTTPS就被提出了(1994年).

说了半天, 何谓不安全? 简而言之, 在网页上输入账号和密码并点击登录的时候, 账号和密码这两个字符串被打包, 抑或是分别被以某种方法加密

甚至可能不加密

, 然后发送给服务端. 虽然, 信息会被以某些算法加密, 比如说常见的RSA加密算法(首字母是三个发明者的姓氏首字母, 就不写了), 但是只要能获取到这个被加密的信息, 还是很有可能可以”黑”进账号, 只要能够模拟出来向服务端发送这个包就可以了, 相当于绕过网页对信息的打包和加密(俗称发包), 然后大概率就能直接登陆进去了,

根本不必知道密码明文到底是什么

.

所以, HTTPS被提出, 要求在HTTP层与TCP(

T

ransmission

C

ontrol

P

rotocol, 传输控制协议)层之间加上一个带有加密的层, 也就是TLS/SSL. 由于这个加密层将几乎所有的东西都加密了, 而不仅仅是账号和密码的明文, 所以他人只能知道存在这么一个网络连接, 但是里面的内容几乎不可能看到.

至于上述的”层”是什么, 简单来说, 可以想到每个人的网络设备(比如手机或者电脑)都有不同的硬件, 不同的系统, 安装了不同的软件, 但是对每种组合都写一份代码是不现实的, 所以设计时将其分层, 物理层处理不同的硬件, 把它转化成较为统一的接口, 也让别的层可以专注于实现自己的功能, 大概也可以看作是一种

模块化

. 而HTTP就是为了收发HTML页面, TLS就是为了加密.



2. HTTPS里面还是HTTP

HTTPS是好, 但是这个S是基于网络证书的, 简而言之, 就是服务端向某些有公信力的机构提出申请证书, 然后以某种方式证明自己拥有这个服务端, 然后机构颁发一个有时效的证书, 包含了加解密信息, 服务端便用这个证书加密客户端与服务端之间的信息, 浏览器看到这个颁发证书的机构是自己认识的, 就说这个连接是安全的, 以防有人伪造证书.

这个证书, 一来一般是要钱的

这些机构也是要恰饭的对吧

, 二来需要按照域名申请, 本身申请这件事情就是蛮麻烦的. 总之, 出于各种原因, 一个网页可能不能全上HTTPS内容, 就会在HTML文件里写请求HTTP的连接, 比如说一些广告嵌入就这么干.

这个HTTP, 看似只要不用来传输我的账号密码就行了, 但是, 它可以通过一些奇技淫巧(比如内嵌某些代码)来获取, 或者是获取些别的信息, 或是别的操作. 总而言之, 还是存在隐患的.

下面就给大家展示一下纯HTTP, 纯HTTPS, 和HTTPS中含有HTTP资源, 浏览器都会给出什么样子的提示:


纯HTTP



纯HTTPS


在这里插入图片描述


HTTPS中含有HTTP资源


这是在手机上, 信息不是很全, 在电脑上又能看到啥呢? 使用DevTools, 模拟客户端标识为移动端:



哎, 又是不安全. 查看网页信息, 在Console中能看到这些东西:



第四条消息(以Mixed Content开头的那条)写道, 这个网页用HTTPS加载, 但是又请求了一个不安全的(HTTP)资源. 打开这个地址可以看到是一张图片.

现在是用PC端浏览器请求移动端网页的效果, 那如果不模拟成移动端呢?



欸, 它又好了?



访问同一个网站,用手机的用户标识就显示”不安全”,但是用PC端的用户标识就显示”安全”.

说实话, 我不知道这么设计是为什么, 可能是用加密层要花更多时间和流量, 也有可能是电脑上的浏览器的某些插件在作祟(褒义的那种), 但是从此可以联想到, 你是不是曾经有过在手机看网页, 突然跳出了一个广告, 还是关不掉的那种, 那有可能就是因为这个看似安全的HTTPS里面夹杂着HTTP内容所致.

当然, 有人会说, 还很有可能是

DNS

(

D

omain

N

ame

S

ystem, 域名系统)被劫持了. 简而言之就是你向域名解析服务器请求了网址A的IP地址, 但是由于DNS请求也是非加密的, 所以这个请求被中间人换掉了, 所以你得到了网址B的IP地址, 就去了另一个你不想去的网站. DNS劫持实际上可能在这种弹出广告的劫持中占比比较高, 但是你有没有考虑过,

为什么电脑上这种广告似乎就是比手机上看到的次数(频率)要少, 即使考虑可能看手机的时间比看电脑的要多.

因此, 为了杜绝这种事情, 有浏览器厂商站出来, 称要把这些可能造成信息泄露的行为或方法(说的就是你, Flash)全部禁用, 根本不让你访问这种网站, 或者不允许加载这些内容, 比如Chrome.

现在再去看看你平时浏览的网站, 是不是发现有不少都或多或少地不太”安全”?



3. 结尾语

此文起于一个偶然, 所以就顺手写了下来, 权当成随笔, 也可能写得不很严谨.

本文绝大多数内容源于维基百科, 有需要或者兴趣的话可以参阅, 或者直接看

IETF

, 关键字基本都被列了出来, 并且其英文缩写的字母都被加粗了.

觉得有用的话,不要吝惜评论点赞分享哦,希望大家多多包涵,有任何问题欢迎指正、讨论。

本文基于CC-BY-SA 4.0协议,欢迎转载

(博客看累了?去

我的B站

瞧一瞧?)



版权声明:本文为qq_27133869原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。