使用TLS / SSL(HTTPS)加密时是否对所有URL都进行了加密?我想知道,因为我希望在使用TLS / SSL(HTTPS)时隐藏所有URL数据。
如果TLS / SSL为您提供了完整的URL加密,那么我不必担心隐藏URL中的机密信息。
https://somewhere_i_trust/ways_to_protest_against_the_government/
。然后,URL包含机密数据,即我正在考虑抗议政府的建议。
使用TLS / SSL(HTTPS)加密时是否对所有URL都进行了加密?我想知道,因为我希望在使用TLS / SSL(HTTPS)时隐藏所有URL数据。
如果TLS / SSL为您提供了完整的URL加密,那么我不必担心隐藏URL中的机密信息。
https://somewhere_i_trust/ways_to_protest_against_the_government/
。然后,URL包含机密数据,即我正在考虑抗议政府的建议。
Answers:
是的,SSL连接在TCP层和HTTP层之间。客户端和服务器首先建立安全的加密TCP连接(通过SSL / TLS协议),然后客户端将通过该加密的TCP连接发送HTTP请求(GET,POST,DELETE ...)。
由于没有人提供电汇,这是一个。
服务器名称(URL的域部分)ClientHello
以纯文本形式出现在数据包中。
下面显示了浏览器的请求:
https://i.stack.imgur.com/path/?some=parameters&go=here
有关 TLS版本字段的更多信息,请参见此答案(其中有3个-不是版本,每个字段都包含版本号!)
来自https://www.ietf.org/rfc/rfc3546.txt:
3.1。服务器名称指示
[TLS]没有为客户端提供一种机制来告知服务器它正在联系的服务器的名称。 客户可能希望提供此信息,以促进与服务器的安全连接,这些服务器在单个基础网络地址上托管着多个“虚拟”服务器。
为了提供服务器名称,客户端可以在(扩展的)客户端问候中包含类型为“ server_name”的扩展。
如果使用SNI扩展名,则FQDN(URL的域部分)可以在数据包内以明文形式传输。ClientHello
由于请求URL是HTTP(OSI第7层)内容,因此URL(/path/?some=parameters&go=here
)的其余部分没有任何事务ClientHello
,因此它将永远不会显示在TLS握手中(第4层或第5层)。建立安全 TLS通道后,稍后将在GET /path/?some=parameters&go=here HTTP/1.1
HTTP请求中进行处理。
域名可以明文传输(如果在TLS握手中使用了SNI扩展名),但是URL(路径和参数)始终是加密的。
谢谢carlin.scott提出了这一点。
现在,可以通过此RFC提议草案对SNI扩展中的有效负载进行加密。此功能仅在TLS 1.3中存在(作为一种选择,并且要由两端实现),并且与TLS 1.2及以下版本不存在向后兼容性。
CloudFlare正在这样做,您可以在此处了解更多内部信息— 如果鸡肉必须在鸡蛋之前出现,您将鸡肉放在哪里?
实际上,这意味着它现在已经加密了,而不是以纯文本形式发送FQDN(如Wireshark捕获所示)。
注意:由于反向DNS查找可能仍会显示预期的目标主机,因此它比安全性更能解决隐私问题。
我同意先前的答案:
明确地说:
使用TLS,URL的第一部分(https://www.example.com/)在建立连接时仍然可见。第二部分(/ herearemygetparameters / 1/2/3/4)受TLS保护。
但是,有很多原因导致您不应该在GET请求中放置参数。
首先,正如其他人已经提到的:-通过浏览器地址栏泄漏-通过历史记录泄漏
除此之外,您还会通过http引荐网址泄漏URL:用户在TLS上看到站点A,然后单击指向站点B的链接。如果两个站点都在TLS上,则对站点B的请求将包含站点A中的完整URL。请求的参照参数。站点B的管理员可以从服务器B的日志文件中检索它。)
马克·诺瓦科夫斯基(Marc Novakowski)的有用答案的补充-URL存储在服务器上的日志中(例如,存储在/ etc / httpd / logs / ssl_access_log中),因此,如果您不希望服务器将信息保存更长的时间,术语,请勿将其放在URL中。
是的,没有。
将来,使用加密的SNI和DNS可能会改变这种情况,但是截至2018年,这两种技术已不再普遍使用。
对于GET请求,请注意,用户仍然可以将URL剪切并粘贴到位置栏中,并且您可能不希望在其中放置任何人都可以看到屏幕的机密信息。
监视流量的第三方也可以通过检查您的流量并将其与其他用户访问该站点的流量进行比较来确定访问的页面。例如,如果一个站点上只有2个页面,一个页面比另一个页面大得多,那么比较数据传输的大小就会知道您访问了哪个页面。有几种方法可以将其隐藏给第三方,但它们不是正常的服务器或浏览器行为。例如,请参见SciRate上的这篇论文,网址为https://scirate.com/arxiv/1403.0297。
通常,其他答案是正确的,尽管实际上本文显示可以很有效地确定访问的页面(即URL)。
您也不能总是依靠完整URL的私密性。例如,有时在企业网络中,像公司PC这样的提供的设备都配置了额外的“受信任”根证书,以便您的浏览器可以安静地信任对HTTPS流量的代理(中间人)检查。这意味着公开了完整的URL供检查。通常将其保存到日志中。
此外,您的密码也会被公开并可能被记录下来,这是使用一次性密码或经常更改密码的另一个原因。
最后,如果未进行其他加密,则请求和响应内容也将公开。
Checkpoint此处介绍了一种检查设置的示例。也可以通过这种方式设置使用提供的PC的旧式“ Internetcafé”。
链接到我对重复问题的回答。该URL不仅在浏览器历史记录中可用,而且在服务器端日志中也将作为HTTP Referer标头发送,如果您使用第三方内容,则将该URL暴露给您控制之外的源。
现在是2019年,并且TLS v1.3已发布。根据Cloudflare的说法,借助TLS v1.3,可以对SNI进行加密。所以,我告诉自己太好了!让我们看一下它在cloudflare.com的TCP数据包中的外观。因此,我从使用Google Chrome作为浏览器和Wireshark作为数据包嗅探器的cloudflare服务器的响应中捕获了一个“客户端问候”握手数据包。我仍然可以在Client hello数据包中以纯文本格式读取服务器名称。
因此,请注意您可以阅读的内容,因为这仍然不是匿名连接。客户端和服务器之间的中间件可以记录客户端请求的每个域。
因此,看起来SNI的加密需要其他实现才能与TLSv1.3一起使用
下面的文章介绍了Cloudflare作为TLSv1.3的一部分提供的SNI的加密。但是,在TLS v1.3下,cloudflare.com的所有HTTP URL均以纯文本形式出现在TCP数据包中
network.security.esni.enabled
,设置network.trr.mode
为2(当前将DoH解析器设置为CloudFlare),然后重新启动浏览器(原文如此!);那么它将使用ESNI-域的基础架构支持的位置。有关详细信息,请参阅blog.mozilla.org/security/2018/10/18/…。
是的,没有。
实际的URL已加密,这意味着某人无法分辨出您访问的网站上的确切网页。但是,TLS标头包含您正在访问的服务器的主机名(例如,www.quora.com)未加密。DNS也几乎永远不会被加密,并且还会泄漏您正在访问的主机名。默认情况下,此DNS查询几乎始终针对您ISP的服务器,因此,它们可以通过将DNS请求嗅探到其他DNS服务器,或针对自己的DNS服务器进行记录来轻松查看您访问的每个网站的主机名。
但是,如果您担心是否有人可以找到您正在访问哪个网站,这还不够。HTTPS在OSI第4层上运行,并在该级别上加密所有数据,但较低的级别留给了承载它的网络。仍然有人可以只追踪OSI层3上的流量的路径和目的地。这意味着嗅探您的流量的人可以找到IP地址,并通过扩展找到您正在访问的网站的域名。
更糟糕的是,您第一次(以及随后的某些时间,具体取决于清除DNS缓存的方式/时间)可能会将未加密的DNS查询发送到任何DNS服务器,以请求HTTPS目标URL的IP地址(同样,通过默认情况下,通常是您的ISP的服务器)。任何能够访问您的DNS服务器路径上的流量的人都可以嗅探此查询。
如果您正在寻求高标准的隐私,则需要使用受信任的加密VPN和/或加密代理服务来补充HTTPS。您也可以调查DNSSEC来保护DNS查询。此服务必须是可信赖的,因为它们可以轻松地执行上述对流量来源和目的地的跟踪。
尽管这里已经有一些不错的答案,但大多数答案都集中在浏览器导航上。我在2018年撰写本文,可能有人想知道移动应用程序的安全性。
对于移动应用程序,如果您同时控制应用程序的两端(服务器和应用程序),则只要使用HTTPS 便是安全的。iOS或Android将验证证书并缓解可能的MiM攻击(这将是所有这方面的唯一弱点)。您可以通过HTTPS连接发送敏感数据,该数据将在传输过程中进行加密。仅您的应用程序和服务器将知道通过https发送的所有参数。
唯一的“可能”是客户端或服务器感染了恶意软件,这些恶意软件可以在将数据包装到https中之前先查看数据。但是,如果有人感染了这种软件,则无论您使用什么方式传输数据,他们都可以访问该数据。
尽管您已经有了很好的答案,但我非常喜欢此网站上的解释:https : //https.cio.gov/faq/#what-information-does-https-protect
简而言之:使用HTTPS隐藏: