Ho cercato su Google molte e molte risposte sono Sì. Ad esempio: Is GET data also encrypted in HTTPS? Ma il senior security engineer della nostra azienda mi ha detto che l'URL non sarebbe stato crittografato.Https crittografa l'intero URL?
Immagine che, se l'URL è stato crittografato, in che modo il server DNS trova l'host e si connette?
Penso che questo sia un punto molto forte sebbene sia contro la maggior parte delle risposte. Quindi sono davvero confuso e le mie domande sono:
- Https crittografa tutto nella richiesta? (compresi URL, host, percorso, parametri, intestazioni)
- In caso affermativo, in che modo il server DNS decodifica la richiesta e la invia al server host?
ho provato ad accedere https://www.amazon.com/gp/css/homepage.html/ref=ya_surl_youracct e il mio IE inviato due richieste al server:
Primo:
CONNECT www.amazon.com:443 HTTP/1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: www.amazon.com
Content-Length: 0
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Secondo:
GET /gp/css/homepage.html/ref=ya_surl_youracct HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: www.amazon.com
DNT: 1
Connection: Keep-Alive
Sembra che il mio browser ha richiesto due volte : la prima volta è stabilire la connessione con l'host (senza crittografia) e la seconda volta inviare una richiesta crittografata su https? Ho ragione? Se sto capendo correttamente, quando un client chiama l'API RESTFUL usando https, invia le richieste (connessione e get/post) due volte ogni volta?
In termini di sicurezza dovresti assumere che l'URL sia pubblico. Questo non è proprio il caso (vedi le risposte di JohnWu) ma tu, come afferma @ T.Rob, dovresti dare per scontato che possano essere visualizzati e non mettere niente di sensibile in essi. –