代码之家  ›  专栏  ›  技术社区  ›  Daniel Kivatinos

HTTPS URL是否加密?

  •  1287
  • Daniel Kivatinos  · 技术社区  · 17 年前

    如果TLS/SSL为您提供了完整的URL加密,那么我就不必担心从URL中隐藏机密信息。

    14 回复  |  直到 7 年前
        1
  •  1119
  •   matteo    4 年前

    Note however (正如评论中所指出的那样) 域名 在TLS协商的第一部分,URL的一部分以明文形式发送。因此,可以嗅探服务器的域名。但不是URL的其余部分。

        2
  •  986
  •   Community Mohan Dere    4 年前

    由于没有人提供窃听记录,这里有一个。
    (URL的域部分)显示在 ClientHello .

    以下显示了浏览器对以下对象的请求:
    https://i.stack.imgur.com/path/?some=parameters&go=here

    ClientHello SNI See this answer

    https://www.ietf.org/rfc/rfc3546.txt :

    [TLS]不提供客户端告诉服务器的机制 客户提供此信息以促进安全 与承载多个“虚拟”服务器的服务器的连接 单个底层网络地址。

    为了提供服务器名称,客户端可能会包含 (扩展)客户端hello中“server_name”类型的扩展。


    • FQDN(URL的域部分) 被传输 里面

    • /path/?some=parameters&go=here )里面没有生意 客户您好 由于请求URL是HTTP的东西(OSI第7层),因此它永远不会出现在TLS握手中(第4层或第5层)。这将在稍后进行 GET /path/?some=parameters&go=here HTTP/1.1 HTTP请求,


    域名可以明文传输(如果在TLS握手中使用SNI扩展),但URL(路径和参数)始终是加密的。


    2019年3月更新

    carlin.scott

    SNI扩展中的有效载荷现在可以通过以下方式加密 this draft RFC proposal

    If the chicken must come before the egg, where do you put the chicken?

    这比安全方面更能解决隐私方面的问题,因为反向DNS查找无论如何都可能揭示预期的目标主机。

    2020年9月更新

    现在有一个RFC草案,用于加密整个Client Hello消息,而不仅仅是SNI部分: https://datatracker.ietf.org/doc/draft-ietf-tls-esni/?include_text=1

    在撰写本文时,此浏览器的支持非常有限。

        3
  •  177
  •   Community Mohan Dere    9 年前
        4
  •  111
  •   Mihai Maruseac Vitor Yudi Hansen    12 年前

    我同意前面的回答:

    使用TLS时,URL的第一部分( https://www.example.com/ )在建立连接时仍然可见。第二部分(/herearemygetparameters/1/2/3/4)受TLS保护。

    -浏览器地址栏泄漏

        5
  •  110
  •   DanMan    12 年前

        6
  •  55
  •   mikemaccana    8 年前

    是和否。

    服务器地址部分未加密,因为它用于建立连接。

    随着加密SNI和DNS的出现,这种情况可能会在未来发生变化,但截至2018年,这两种技术都不常用。

    路径、查询字符串等都是加密的。

        7
  •  50
  •   Rhodri Cusack    15 年前

        8
  •  15
  •   Nicolas Guérinet    6 年前

    现在是2019年,TLS v1.3已经发布。根据Cloudflare的说法,由于TLS v1.3,服务器名称指示(SNI也称为主机名)可以加密。所以,我告诉自己很棒!让我们看看它在cloudflare.com的TCP数据包中是什么样子的 因此,我从使用谷歌Chrome浏览器的cloudflare服务器的响应中捕获了一个“客户端问候”握手包;wireshark作为数据包嗅探器。我仍然可以在Clienthello数据包中以纯文本形式读取主机名,如下图所示。它没有加密。

    enter image description here

    因此,请注意您可以阅读的内容,因为这仍然不是匿名连接。客户端和服务器之间的中间件应用程序可以记录客户端请求的每个域。

    https://www.cloudflare.com/ssl/encrypted-sni/

    目前,我认为谷歌chrome浏览器不支持它。您可以在Firefox中手动激活加密SNI。当我出于某种原因尝试它时,它并没有立即奏效。我重启了Firefox两次,才使其正常工作:

    检查network.security.esni.enabled是否为true。 清除缓存/重新启动

    正如你所看到的,对于那些想确保咖啡店老板不会记录人们访问的网站列表的人来说,VPN服务今天仍然很有用。

        9
  •  10
  •   pbhj    10 年前

    https://scirate.com/arxiv/1403.0297 .

    一般来说,其他答案都是正确的,尽管本文表明可以非常有效地确定访问的页面(即URL)。

        10
  •  9
  •   Don Gillis    9 年前

    此外,您的密码也会被暴露并可能被记录下来,这是使用的另一个原因 one time passwords 或者经常更改密码。

    检查设置的一个示例如下所述 Checkpoint here

        11
  •  8
  •   pedrorijo91    6 年前

    虽然你已经有了很好的答案,但我真的很喜欢这个网站上的解释: https://https.cio.gov/faq/#what-information-does-https-protect

    简而言之:使用HTTPS隐藏:

    • HTTP方法
    • POST正文(如果存在)
        12
  •  7
  •   Community Mohan Dere    9 年前

    链接到我的答案 duplicate question

        13
  •  7
  •   Ricardo Gonçalves    7 年前

    对于移动应用程序 ,如果您控制应用程序的两端(服务器和应用程序),只要您使用HTTPS 你很安全 运输过程中

    这里唯一的“可能”是如果客户端或服务器感染了恶意软件,这些软件可以在数据被打包到https之前看到数据。但是,如果有人感染了这种软件,无论你用什么来传输数据,他们都可以访问这些数据。

        14
  •  1
  •   Chris Rutledge    7 年前

    此外,如果您正在构建ReSTful API,浏览器泄漏和http referer问题大多会得到缓解,因为客户端可能不是浏览器,您可能没有人单击链接。