Tôi googled rất nhiều và nhiều câu trả lời là Có. Ví dụ: Is GET data also encrypted in HTTPS? Nhưng kỹ sư bảo mật cao cấp trong công ty của chúng tôi đã nói với tôi rằng URL sẽ không được mã hóa.https có mã hóa toàn bộ URL không?
Hình ảnh, nếu URL được mã hóa, máy chủ DNS sẽ tìm máy chủ lưu trữ và kết nối như thế nào?
Tôi nghĩ đây là điểm rất mạnh mặc dù nó chống lại hầu hết các câu trả lời. Vì vậy, tôi thực sự bối rối và các câu hỏi của tôi là:
- https có mã hóa mọi thứ trong yêu cầu không? (bao gồm URL, máy chủ, đường dẫn, thông số, tiêu đề)
- Nếu có, cách máy chủ DNS giải mã yêu cầu và gửi nó đến máy chủ lưu trữ?
tôi đã cố gắng để truy cập https://www.amazon.com/gp/css/homepage.html/ref=ya_surl_youracct và IE của tôi gửi hai yêu cầu đến máy chủ:
Đầu tiên:
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
Thứ hai:
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
Dường như trình duyệt của tôi đã yêu cầu hai lần : lần đầu tiên là thiết lập kết nối với máy chủ (không mã hóa) và lần thứ hai gửi yêu cầu được mã hóa qua https? Tôi có đúng không? Nếu tôi hiểu điều này một cách chính xác, khi một khách hàng gọi API RESTFUL bằng cách sử dụng https, nó sẽ gửi các yêu cầu (kết nối và nhận/đăng) hai lần mỗi lần?
Xét về an ninh bạn nên giả định rằng URL là công khai. Đây không phải là trường hợp thực sự (xem câu trả lời của JohnWu) nhưng bạn, như @ T.Rob nói, bạn nên giả định rằng chúng có thể được xem và không đặt gì nhạy cảm trong chúng. –