http和https的区别?

我知道https更加安全,问题是怎么个安全法?

比如,我现在有一个纯的静态页面,就是做信息展示,就是我们说的marketing site,这里面也没有什么ajax请求啥的,是不是就http/https从安全角度就没有区别了????

但是浏览器还是标记Http not secure呢?哪里不安全了?

阅读 3.6k
7 个回答

小明要给小红写信,但小明小红之间离的太远了,没法直接交换信件,只能是小明先给小强、小强再给小刚、小刚再给小红,小红收到了以后回信给小刚、小刚再给小强、小强才能给到小明。小强和小刚在这个过程中都可以拆开信看到内容、甚至模仿小明小红的字迹去篡改这封信。本来可能小明写的是情书,被小刚改成了战书,小红收到了不得气炸了。

你现在用浏览器访问了思否网站,但你的电脑跟思否网站服务器显然并不是一根网线直连的,中间会经过层层设备转发,有路由器、交换机、中继器、代理、网关等等等等。而 HTTP 是明文的,也就是这中间的每一个设备都可以监听、甚至篡改 HTTP 报文。即便你是纯静态的网站,但你怎么确保浏览器收到的一定就是你的服务器返回的那个 HTTP 报文、中间没经过其他设备的监听和篡改呢?本来你服务器返回的是一个企业宣传网站,结果被篡改成了一个黄赌毒网站。

这种监听和篡改在计算机中被称之为“中间人攻击” —— 顾名思义,就是因为通信两端中间的某些节点发生的攻击。而 HTTPS 要解决的就是这个问题。具体还可以细分为单向认证和双向认证。单向认证只能确保客户端收到的一定是服务器返回的内容,但无法保证服务器收到的一定是客户端发出的内容;双向认证则两端都可以确保不被篡改。

扩展思考:前面说因为客户端和服务器离得太远所以不得不需要很多“中间人”来转发,那么假如客户端和服务器用网线直接连接、去掉这些“中间人”,用 HTTP 就会安全吗?答案是依然不安全,至于为什么,题主可以先自己思考一下。

http 页面很容易被篡改,最后显示的不一定是你希望显示的内容。

曾经一段时间网络服务商会在页面里插入自己的广告,就是在篡改页面。

HTTP和HTTPS的主要区别在于HTTPS用了SSL/TLS协议来加密通信内容,提供了数据完整性和身份验证,而HTTP就没有。

HTTP工作流程:
企业微信截图_16889698315323.png
HTTPS工作流程:
企业微信截图_16889698631077.png

可以了解一下https的s指的是什么 👉Strict-Transport-Security - HTTP | MDN

示例场景

你登录到一个免费 Wi-Fi 热点,然后开始浏览网站,访问你的网上银行,查看你的支出,并且支付一些订单。很不幸,你接入的 Wi-Fi 实际上是黑客的笔记本热点,他们拦截了你原始的 HTTP 请求,然后重定向到一个与你银行网站一模一样的钓鱼网站。现在,你的隐私数据暴露给黑客了。

Strict Transport Security 解决了这个问题;只要你通过 HTTPS 请求访问银行网站,并且银行网站配置好 Strict Transport Security,你的浏览器知道自动使用 HTTPS 请求,这可以阻止黑客的中间人攻击的把戏。

HTTP 是一种普通的、不安全的传输协议,数据在传输过程中以明文形式发送;而 HTTPS 则是通过加密和认证来保护数据安全的安全传输协议。

新手上路,请多包涵

image.png

https主要就是解决数据明文传输/中间人篡改的问题。包括其他的所有明文的协议几乎都会有这种问题。

其实还有一点需要补充一下,那就是并不只是服务端使用了https协议,就能保证数据不会被第三方查看或者篡改。

在传输数据前,SSL握手时,客户端就需要去校验服务端发送过来的证书是否是可信的,判断是受信任的才能进行下一步传输,如果在证书异常的情况下传输数据,那么就还是有被中间人攻击的可能。SSL弱校验 说的就是这个问题。

宣传栏