Are HTTPS URLs encrypted?

前端 未结 14 1883
无人共我
无人共我 2020-11-22 04:26

Are all URLs encrypted when using TLS/SSL (HTTPS) encryption? I would like to know because I want all URL data to be hidden when using TLS/SSL (HTTPS).

If TLS/SSL gi

相关标签:
14条回答
  • 2020-11-22 04:59

    It is now 2019 and the TLS v1.3 has been released. According to Cloudflare, the server name indication (SNI aka the hostname) can be encrypted thanks to TLS v1.3. So, I told myself great! Let's see how it looks within the TCP packets of cloudflare.com So, I caught a "client hello" handshake packet from a response of the cloudflare server using Google Chrome as browser & wireshark as packet sniffer. I still can read the hostname in plain text within the Client hello packet as you can see below. It is not encrypted.

    So, beware of what you can read because this is still not an anonymous connection. A middleware application between the client and the server could log every domain that are requested by a client.

    So, it looks like the encryption of the SNI requires additional implementations to work along with TLSv1.3

    UPDATE June 2020: It looks like the Encrypted SNI is initiated by the browser. Cloudflare has a page for you to check if your browser supports Encrypted SNI:

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

    At this point, I think Google chrome does not support it. You can activate Encrypted SNI in Firefox manually. When I tried it for some reason, it didn't work instantly. I restarted Firefox twice before it worked:

    Type: about:config in the URL field.

    Check if network.security.esni.enabled is true. Clear your cache / restart

    Go to the website, I mentioned before.

    As you can see VPN services are still useful today for people who want to ensure that a coffee shop owner does not log the list of websites that people visit.

    0 讨论(0)
  • 2020-11-22 05:01

    Yes, the SSL connection is between the TCP layer and the HTTP layer. The client and server first establish a secure encrypted TCP connection (via the SSL/TLS protocol) and then the client will send the HTTP request (GET, POST, DELETE...) over that encrypted TCP connection.

    0 讨论(0)
  • 2020-11-22 05:01

    Entire request and response is encrypted, including URL.

    Note that when you use a HTTP Proxy, it knows the address (domain) of the target server, but doesn't know the requested path on this server (i.e. request and response are always encrypted).

    0 讨论(0)
  • 2020-11-22 05:04

    An addition to the helpful answer from Marc Novakowski - the URL is stored in the logs on the server (e.g., in /etc/httpd/logs/ssl_access_log), so if you don't want the server to maintain the information over the longer term, don't put it in the URL.

    0 讨论(0)
  • 2020-11-22 05:06

    Additionally, if you're building a ReSTful API, browser leakage and http referer issues are mostly mitigated as the client may not be a browser and you may not have people clicking links.

    If this is the case I'd recommend oAuth2 login to obtain a bearer token. In which case the only sensitive data would be the initial credentials...which should probably be in a post request anyway

    0 讨论(0)
  • 2020-11-22 05:07

    Linking to my answer on a duplicate question. Not only is the URL available in the browsers history, the server side logs but it's also sent as the HTTP Referer header which if you use third party content, exposes the URL to sources outside your control.

    0 讨论(0)
提交回复
热议问题