https 比 http 安全多少?

How is https more secure than http?

我想了解 https 和 http 之间的区别。根据我目前所读的内容,https 是加密的 http。

所以在用户提交密码表单的场景中,如果是http,密码将以基于文本的格式通过网络发送,而如果是https,密码将被发送以加密格式。 所以 https 更安全。用户的用户名和密码不会暴露给窥探者。

但我的问题是,假设有人在窥探网络,而我们使用的是 https,snooper/hacker 仍然可以访问加密数据,他可以使用加密数据获取会话 cookie 的访问权限并登录网站。

我们如何防范这种情况?或者 https 在这种情况下如何帮助我们?

您似乎不太清楚 HTTPS 到底加密了什么,所以这里有一个粗略的概述:

  • 浏览器形成一个 HTTP request,它由 GET /foo/bar 和其他 HTTP headers 等行组成,也许还有一个请求 body
  • 浏览器查找属于它将向其发送请求的域的服务器的 IP 地址
  • 它联系该服务器并协商 TLS session,其中包括协商 session-specific 两端的秘密
  • 它加密它在第一步中创建的 HTTP 请求并将其发送到服务器
  • 通信是分层的:HTTP 请求被包裹在 TLS 中并打包成 TCP/IP 数据包,路由器只路由 IP 数据包而不需要知道任何内容;一般来说,路由器是协议不可知的,它们不知道 HTTP,只有包络 TCP/IP 协议
  • 接收服务器正在解包TCP/IP数据包,重组TLS请求,解密,最后得到纯HTTP请求

say somebody is snooping the network, and we are using https, the snooper/hacker still has access to the encrypted data, he can use the encrypted data to gain access of session cookie and login to the website

没有。即使一些body 捕获了加密的请求,他们也没有办法对其进行解密(*假设协议中没有缺陷并且brute-force 解密是不切实际的)。而且他们不能简单地重放加密请求,因为他们需要建立自己的 TLS 连接,这将涉及不同的秘密,服务器将无法解密最初用别人的秘密加密的数据。

what I meant what if url is encrypted, how will the routing happen

如上所述,路由器不路由 URLs,仅路由 TCP/IP 数据包;并且发送请求的客户端知道 URL,已经将“URL”转换为可简单路由的 TCP/IP 数据包。

DNS lookup converts the url to ip address, where the packets need to be sent. If the url is encrypted, the dns lookup shouldn't work

客户端在发送请求之前对未加密的主机名进行 DNS 请求。这实际上是整个链条的唯一“弱点”:攻击者 可以 知道请求发送到哪个主机,可以通过观察 DNS 流量或可能通过 SNI headers 在 TLS 协议中或简单地从目标 IP 地址猜测。它不会告诉攻击者请求包含什么URL,只会告诉攻击者主机或服务器。具体 URL/path 和其他所有内容都在包裹在 TCP/IP.

包裹的 TLS 中的 HTTP 请求中加密