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

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


当前回答

正如其他答案已经指出的,https“url”确实是加密的。然而,解析域名时您的DNS请求/响应可能不是,当然,如果您使用浏览器,您的url也可能被记录。

其他回答

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

简而言之:使用HTTPS隐藏:

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

是也不是。

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

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

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

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

整个请求和响应都是加密的,包括URL。

请注意,当你使用HTTP代理时,它知道目标服务器的地址(域),但不知道该服务器上的请求路径(即请求和响应始终是加密的)。

是的,SSL连接是在TCP层和HTTP层之间。客户端和服务器端首先建立一个安全的加密TCP连接(通过SSL/TLS协议),然后客户端通过加密的TCP连接发送HTTP请求(GET, POST, DELETE…)

但是请注意(在评论中也提到了),URL的域名部分在TLS协商的第一部分以明文形式发送。因此,可以嗅出服务器的域名。但不是URL的其余部分。

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

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

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