GET数据是否也在HTTPS中加密?

Jad*_*ias 119 https http-get

当你拿到时

https://encrypted.google.com/search?q=%s

%s查询加密?还是只是回应?如果不是,谷歌为什么要通过加密服务它的公共内容呢?

Mar*_*tos 136

整个请求都是加密的,包括URL,甚至是命令(GET).代理服务器等中介方唯一可以收集的是目标地址和端口.

但请注意,TLS握手的客户端Hello数据包可以通过SNI扩展(感谢@hafichuk)以明文形式通告完全限定的域名,所有现代主流浏览器都使用该扩展,但有些只在较新的操作系统上使用.

编辑:(因为这只是给我一个"好答案"徽章,我想我应该回答整个问题...)

整个响应也是加密的; 代理人不能拦截它的任何部分.

Google通过https提供搜索和其他内容,因为并非所有内容都是公开的,您可能还想隐藏MITM中的一些公开内容.无论如何,最好让谷歌自己回答.

  • 我对 URL 被加密的说法有点不满。主机名不是 url 的一部分吗?如果是这样,则该声明是错误的。无法向 ISP/代理服务器隐藏主机名/IP 地址,就像您在发送物理邮件时无法隐藏目标地址一样。 (2认同)

Tho*_*mas 59

URL本身是加密的,因此查询字符串中的参数不会通过网络传输.

但是,请记住,包括GET数据的URL通常由Web服务器记录,而POST数据很少.所以如果你打算做类似的事情/login/?username=john&password=doe,那就不要; 改为使用POST.

  • 它是你自己的盒子并不重要.你不希望拥有它的任何人(即邪恶的黑客)以纯文本的形式看到这些密码.或者那些CC号码(假设你没有将它们存储在其他地方). (3认同)
  • +1谢谢.这是在我自己的物理服务器上,所以我不太担心日志,但对于在共享托管环境中考虑这一点的人来说,这是一个很好的考虑因素.这也很重要,因为我将以这种方式转移信用卡号码,并且绝对不想记录它们:) (2认同)

DVK*_*DVK 20

HTTPS在传输任何HTTP数据之前建立基础SSL连接.这可确保所有URL数据(主机名除外,用于建立连接)仅在此加密连接中承载,并且与任何HTTPS数据相同,可以防止中间人攻击.

以上是来自Google Answers的非常全面的答案的一部分:

http://answers.google.com/answers/threadview/id/758002.html#answer


lev*_*501 15

安全地发送主机名后的URL部分.

例如, https://somewhere.com/index.php ?NAME = .FIELD

/index.php?NAME=FIELD部分已加密.事实somewhere.com并非如此.


Eug*_*its 6

一切都是加密的,但你需要记住,你的查询将保留在服务器的日志中,并且可以被各种日志分析器等访问(这通常不是POST请求的情况).

  • @Jader至少管理这些服务器和黑客.使用POST请求时,信息不会保留在日志中,因此除非明确记录,否则日志没有问题.GET查询确实保留在日志中,如果日志发生任何事情(或者管理员决定将这些日志用于任何不良活动),那么您就遇到了麻烦. (2认同)

cHa*_*Hao 5

在传输请求之前连接被加密。所以是的,请求也被加密,包括查询字符串。


Jef*_*amb 5

我刚刚通过 HTTPS 连接到一个网站并传递了一堆 GET 参数。然后我使用wireshark来嗅探网络。使用 HTTP 发送的 URL 是未加密的,这意味着我可以很容易地看到 URL 中的所有 GET 参数。使用 HTTPS,一切都被加密,我什至看不到哪个数据包是 GET 命令,更不用说它的内容了!