dns 安全通过 get 请求发送用户名和密码

dns 安全通过 get 请求发送用户名和密码

这可能是一个理论问题,但如果我请求以下 url:

https://example.com?username=username&password=password

如果 DNS 服务器受到威胁,用户名和密码是否会存储在 DNS 服务器上并导致问题?

在发送任何数据之前是否创建握手和安全隧道?

答案1

当您尝试连接到 时https://example.com/?username=username&password=password,只有example.com会通过 DNS 进行解析(不会向 DNS 服务器发送任何其他内容)。

之后(因为它是 https),将与服务器进行 SSL 握手(密钥交换等),然后才GET /?username=username&password=password通过加密通道发送请求(例如)。

答案2

DNS 查找发生在 HTTPS 连接之前,但仅查找域。在您的示例中,DNS 服务器只知道有人查找了 的地址example.com。它甚至不知道其中涉及浏览器。

加密连接确实是在发送任何数据之前创建的;这包括Host:HTTP 标头,它会告诉服务器 URL 的域部分。这很重要,因为许多网站可以显示在单个 IP 地址上,而 Web 服务器无法在 SSL 协商之前知道请求了哪个网站。现代浏览器实现信噪比,它将域名(且仅域名)发送到加密连接之外。

您在自己的答案中包含的引用几乎是正确的:攻击者可以看到远端的 IP 地址,但除非使用 SNI,否则无法确定域名。

答案3

在发布后立即找到了我正在寻找的答案HTTP 安全

Everything in the HTTPS message is encrypted, including the headers, and the
request/response load. With the exception of the possible CCA cryptographic
attack described in the limitations section below, the attacker can only know
the fact that a connection is taking place between the two parties, already
known to him, the domain name and IP addresses.

相关内容