0. 前言

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

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

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

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

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

啥? 这也太吓人了吧, 要是个个网页都这么不安全, 那我不是早就"体无完肤"了吗? 这大概就是所谓的"naked in the cyberspace"?

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


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


实际上, 大家或许都知道, 这个所谓的安全和不安全, 指的是网站是否采用了SSL(Secure Sockets Layer, 安全套接层)技术进行加密, 不过现在其实应该叫TLS(Transport Layer Security, 传输层安全性协议), 或者更为人所熟知, 就是HTTP(HyperText Transfer Protocol, 超文本传输协议)和HTTPS之间的区别, 那个多出来的S就是Secure(安全).

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

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

为什么会这样呢? 终于, 正文要开始了.


1. HTTP变成了HTTPS

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

说了半天, 何谓不安全? 简而言之, 在网页上输入账号和密码并点击登录的时候, 账号和密码这两个字符串被打包, 抑或是分别被以某种方法加密甚至可能不加密, 然后发送给服务端. 虽然, 信息会被以某些算法加密, 比如说常见的RSA加密算法(首字母是三个发明者的姓氏首字母, 就不写了), 但是只要能获取到这个被加密的信息, 还是很有可能可以"黑"进账号, 只要能够模拟出来向服务端发送这个包就可以了, 相当于绕过网页对信息的打包和加密(俗称发包), 然后大概率就能直接登陆进去了, 根本不必知道密码明文到底是什么.

所以, HTTPS被提出, 要求在HTTP层与TCP(Transmission Control Protocol, 传输控制协议)层之间加上一个带有加密的层, 也就是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(Domain Name System, 域名系统)被劫持了. 简而言之就是你向域名解析服务器请求了网址A的IP地址, 但是由于DNS请求也是非加密的, 所以这个请求被中间人换掉了, 所以你得到了网址B的IP地址, 就去了另一个你不想去的网站. DNS劫持实际上可能在这种弹出广告的劫持中占比比较高, 但是你有没有考虑过, 为什么电脑上这种广告似乎就是比手机上看到的次数(频率)要少, 即使考虑可能看手机的时间比看电脑的要多.

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

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

3. 结尾语

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

本文绝大多数内容源于维基百科, 有需要或者兴趣的话可以参阅, 或者直接看IETF, 关键字基本都被列了出来, 并且其英文缩写的字母都被加粗了.

觉得有用的话,不要吝惜评论点赞分享哦,希望大家多多包涵,有任何问题欢迎指正、讨论。
本文基于CC-BY-SA 4.0协议,欢迎转载
(博客看累了?去我的B站瞧一瞧?)

浏览器提示的不安全到底是什么?相关推荐

  1. 打开浏览器提示下载解决方法

    打开浏览器提示下载问题的症状:打开IE浏览器提示下载html网页文件:打开360浏览器提示下载html文件:打开世界之窗浏览器提示下载html文件,但都不是真正的下载文件! 解决方法:找到" ...

  2. Selenium启动Chrome浏览器提示“请停用以开发者模式运行的扩展程序”的解决办法

    安装了selenium,python运行下面代码: from selenium import webdriverbrowser = webdriver.Chrome() browser.get('ht ...

  3. Chrome 浏览器提示adobe flash player不是最新版本

    Chrome 浏览器提示adobe flash player不是最新版本 百度下载最新版. 刷新 Chrome浏览器.更换其他的浏览器. 刷新过后,无效. 打开Flash Player 检查安装的版本 ...

  4. 提示计算机未安装flash,大师应对安装了flash,但浏览器提示没安装,如何解决...

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到安装了flash,但浏览器提示没安装,如何解决的问题,如果我们遇到了安装了flash,但浏览器提示没安装,如何解决的情况 ...

  5. windows无法新建计算机对象,win10系统ie浏览器提示“Automation 服务器不能创建对象”的办法...

    有关win10系统ie浏览器提示"Automation 服务器不能创建对象"的操作方法想必大家有所耳闻.但是能够对win10系统ie浏览器提示"Automation 服务 ...

  6. php显示无法找到该网页,window_Win8系统IE浏览器提示无法找到该网页的解决方法,  我们在浏览网页的时候, - phpStudy...

    Win8系统IE浏览器提示无法找到该网页的解决方法 我们在浏览网页的时候,有时会遇到"无法显示该网页"的故障,基本都是网络方面的问题.如果网络没问题的话,那就是电脑的故障了.而在W ...

  7. win7开机提示服务器正在运行,科技常识:win7电脑启动ie浏览器提示服务器正在运行的处理方法...

    今天小编跟大家讲解下有关科技常识:win7电脑启动ie浏览器提示服务器正在运行的处理方法,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关科技常识:win7电脑启动ie浏览器提示服务器正在运行 ...

  8. 努比亚手机浏览器 安全证书失效_浏览器提示“该站点安全证书的吊销信息不可用”的解决方法-...

    最近有用户遇到在Win10系统下浏览网页时,系统一直会提示安全警报,提示内容为"该站点安全证书的吊销信息不可用.是否继续?",那么该如何解决呢?其实这大部分都是网页和浏览器的一些问 ...

  9. 让IE浏览器提示下载或直接打开word文档

    核心提示:点击一个指向.doc类型的文件后,怎样不直接在IE里打开,而是弹出一个对话框提示用户想下载还是打开.让IE浏览器提示下载或直接打开word文档 点击一个指向.doc类型的文件后,怎样不直接在 ...

最新文章

  1. MNIST 训练测试
  2. Python 函数式编程指北,不只是面向对象哦
  3. jsp调用controller方法_RPC调用_服务注册与发现
  4. C. Goodbye Souvenir(CDQ 或 树套树)
  5. oracle 11gogg,【OGG】Oracle GoldenGate 11g (二) GoldenGate 11g 单向同步配置 上
  6. 20丨8年哈工程计算机专业录取分数线多少,双一流211大学 哈尔滨工程大学2020年各省各专业录取分数线...
  7. 面向对象编程思想概览(一)类和对象
  8. SharePoint2010人员搜索
  9. tensorflow--制作数据集tfrecords文件
  10. deepin linux mac主题,deepin,安装GNOME桌面环境,类mac界面美化
  11. 百度视频播放器android,百度视频播放器
  12. Java的静态数组和动态数组
  13. C#毕业设计——基于C#+asp.net+SQL server的客户关系管理系统设计与实现(毕业论文+程序源码)——客户关系管理系统
  14. 洞态IAST实现思路分享及讨论
  15. C# eval()函数浅谈
  16. auto.js制作简易音乐app(一)
  17. c语言如何编辑一个长方形,C语言对象编程第一弹封装与抽象(建立长方形对象)...
  18. 手机和电视不在一个网络如何投屏?跨网段投屏方法
  19. windows系统的定时任务
  20. 不止代码,职业发展黄金手册

热门文章

  1. 五子棋爱好者必看!专业五子棋级位段位资格评定标准
  2. Python实现桌面悬浮窗(显示网速,内存,CPU)
  3. 上手评测感受i710750h怎么样-i710750h参数-i710750h相当于桌面级cpu什么水平
  4. 阿里云服务器怎么整体迁移到华为云服务器
  5. 最全软件测试学习工具集合
  6. 软件、系统与平台的区别
  7. 【JS实战】base64转换为file文件类型(上传头像为例子)
  8. 通威股份80亿投建5万吨多晶硅 欲打造世界级清洁能源企业
  9. 京东实现自动账号密码登录;自动将购物车选中商品下单购买。京东在线抢购
  10. 数字1到字符串0001的转换