使用TLS/SSL (HTTPS)加密时,所有url都加密了吗?我想知道,因为我想在使用TLS/SSL (HTTPS)时隐藏所有URL数据。

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


当前回答

A third-party that is monitoring traffic may also be able to determine the page visited by examining your traffic an comparing it with the traffic another user has when visiting the site. For example if there were 2 pages only on a site, one much larger than the other, then comparison of the size of the data transfer would tell which page you visited. There are ways this could be hidden from the third-party but they're not normal server or browser behaviour. See for example this paper from SciRate, https://scirate.com/arxiv/1403.0297.

一般来说,其他答案是正确的,但实际上,这篇论文表明,可以相当有效地确定访问的页面(即URL)。

其他回答

是也不是。

服务器地址部分不加密,因为它是用来建立连接的。

这种情况可能会随着加密的SNI和DNS而改变,但截至2018年,这两种技术都不常用。

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

注意,对于GET请求,用户仍然可以从位置栏中剪切和粘贴URL,并且您可能不希望将机密信息放在那里,因为任何人都可以看到屏幕。

此外,如果您正在构建一个ReSTful API,浏览器泄漏和http引用程序问题将在很大程度上得到缓解,因为客户端可能不是浏览器,您可能没有人点击链接。

如果是这种情况,我建议登录oAuth2以获得一个不记名令牌。在这种情况下,唯一的敏感数据将是初始凭证……无论如何,这应该在post请求中

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

简而言之:使用HTTPS隐藏:

HTTP方法 查询参数 POST正文(如有) 请求头(包括cookie) 状态码

虽然这里已经有了一些好的答案,但大多数都集中在浏览器导航方面。我在2018年写这篇文章,可能有人想知道移动应用程序的安全性。

对于移动应用程序,如果你控制应用程序的两端(服务器和应用程序),只要你使用HTTPS,你就是安全的。iOS或Android将验证证书并减轻可能的MiM攻击(这将是所有这一切中唯一的弱点)。您可以通过HTTPS连接发送敏感数据,这些数据将在传输过程中被加密。只有你的应用程序和服务器会知道通过https发送的任何参数。

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

Marc Novakowski的回答很有帮助——URL存储在服务器的日志中(例如,在/etc/httpd/logs/ssl_access_log中),所以如果你不想让服务器长期保存这些信息,就不要把它放在URL中。