使用TLS/SSL(HTTPS)加密時,所有的URL都被加密了嗎?我想知道,因為我想要使用TLS/SSL(HTTPS)隱藏所有URL數據。
如果TLS/SSL提供了全麵的URL加密,那麽就不用操心隱藏來自URL的機密信息了。
最佳解決思路
是的,HTTPS對URL加密了。SSL連接建立在TCP層和HTTP層之間。客戶端和服務器首先建立一個安全的加密的TCP連接(通過SSL/TLS協議),然後客戶端將通過該加密的TCP連接發送HTTP請求(GET,POST,DELETE …)。
次佳解決思路
帖子other answers已經指出,https “URLs”確實是加密的。但是,解析域名時,DNS請求/響應可能不是,另外,如果使用的是瀏覽器,訪問的URL也可能會被記錄下來。
第三種解決思路
這裏提供一個抓包截圖。服務器名稱(URL的域名部分)以明文顯示在ClientHello
數據包中。
以下顯示的瀏覽器請求為:https://i.stack.imgur.com/path/?some=parameters&go=here
這個帖子可以查看有關TLS版本字段的更多信息(其中有3個 – 不是版本,每個字段都包含一個版本號!)
簡而言之:
-
如果使用SNI擴展,則FQDN(URL的域名部分)可以明文在
ClientHello
數據包內傳輸 -
由於請求URL是一個HTTP事物(OSI第7層),因此URL的其餘部分(
/path/?some=parameters&go=here
)在ClientHello
中看不到,因此它永遠不會在TLS握手(第4層或第5層)中顯示。
匯總
域名可以明文傳輸(如果在TLS握手中使用SNI擴展),但URL(路徑和參數)始終是加密的。