2010-11-10 132 views

回答

110

整個請求被加密,包括URL,甚至命令(GET)。代理服務器等干預方只能收集目標地址和端口。

但是請注意,一個TLS握手的客戶端Hello報文可以通過SNI extension(感謝@hafichuk),用於所有現代主流瀏覽器中的廣告明文完全合格的域名,雖然有些只能在新的操作系統。

編輯:(由於這只是讓我一個「很好的回答」徽章,我想我應該回答的問題全...)

整個響應也被加密;代理不能攔截任何部分。

谷歌提供搜索和其他內容通過https,因爲不是所有的它是公開的,你可能也想隱藏某些從MITM公衆的內容。無論如何,最好讓Google answer for themselves

+0

代理無法進入HTTPS流。 – 2010-11-10 10:04:20

+2

@Eugene:我說過了嗎? – 2010-11-10 10:13:33

+1

對不起,我一定誤解了這句話。 – 2010-11-10 10:25:29

4

連接在發送請求之前被加密。所以是的,請求也被加密,包括查詢字符串。

5

一切都是加密的,但你要記住,你的查詢會留在服務器的日誌,並會以各種日誌分析等等(這通常是不與POST請求的情況下)訪問。

+0

哪個服務器?誰可以訪問? – 2010-11-10 11:46:47

+2

@Jader至少對那些服務器的管理員和黑客。通過POST請求,信息不會保留在日誌中,因此除非明確記錄日誌,否則日誌沒有問題。 GET查詢停留在日誌中,如果日誌發生任何變化(或者管理員決定將這些日誌用於任何不良活動),那麼您就遇到了麻煩。 – 2010-11-10 18:10:42

3

的SSL發生在頭解析之前,這意味着:

Client creates Request 
Request gets encrypted 
Encrypted request gets transmitted to the Server 
Server decrypts the Request 
Request gets parsed 

的請求看起來像這樣(不記得確切的語法,但應儘量接近):

GET /search?q=qwerty HTTP/1.1 
Host: www.google.de 

這也是爲什麼具有相同的IP多臺主機不同的SSL證書是有問題的,所請求的主機名不知道,直到解密。

+1

'HTTP/1.1'出現在第一行的末尾。 – 2010-11-10 10:16:09

+0

@Marcelos Cantos:謝謝,這已經有一段時間了,因爲我不得不手動編寫HTTP請求。 – dbemerlin 2010-11-10 14:36:39

3

是的,它是安全的。 SSL加密一切。從POST請求

摘錄:從GET請求

POST /foo HTTP/1.1 
... some other headers 

摘錄:

GET /foo?a=b HTTP/1.1 
... some other headers 

在無論是套接字上發出這兩種情況下是加密的。在GET請求期間客戶端在他的瀏覽器中看到參數的事實並不意味着中間的人會看到相同的事實。

20

HTTPS在傳輸任何HTTP數據之前建立底層SSL連接。這可確保所有URL數據(除用於建立連接的主機名稱 以外)在此加密連接內單獨承載 ,並且以與任何HTTPS相同的方式保護而不受 中間人攻擊數據是。

以上是從谷歌的答案很全面的答案設在這裏的一部分:

http://answers.google.com/answers/threadview/id/758002.html#answer

0

使用HTTPS時,GET請求是加密的 - 事實上,這就是爲什麼安全網站需要有一個唯一的IP地址 - 無法從請求中獲取預期的主機名(或虛擬目錄),直到它被解密。

+0

JFYI:有一個TLS擴展名,它允許客戶端指定主機名,因此服務器可以選擇相應的證書。 – 2011-01-20 19:22:48

+0

@Eugene:謝謝 - 我知道TLS的擴展,但只有最寬鬆的意識 - 我對細節一無所知,或者在實際使用中可能(或不可能)有多大。 – 2011-01-20 19:38:26

50

URL本身是加密的,所以查詢字符串中的參數不會在整個導線中傳播。

但是,請記住,包含GET數據的URL通常由Web服務器記錄,而POST數據很少。所以如果你打算做一些像/login/?username=john&password=doe那樣的事情,那麼不要;改用POST。

+1

+1謝謝。這是在我自己的物理服務器上,所以我不太擔心日誌,但這對於任何人在共享主機環境中考慮這一點都是一個很好的考慮。考慮到這一點也很重要,因爲我將以這種方式轉移信用卡號碼,並且肯定不會記錄它們:) – orokusaki 2011-01-21 16:20:11

+2

它並不重要,它是您自己的盒子。您不希望任何擁有它的人(即惡意黑客)以純文本的形式查看這些密碼。或者那些CC號碼(假設你沒有在其他地方儲存)。 – Thomas 2011-01-21 16:24:54

+0

嗨,儘管使用https和方法POST可以在瀏覽器中看到表單數據,如username = john&password = doe。 在這種情況下我們可以使用加密,還是存在更好的解決方案? 謝謝 – 2014-12-30 10:42:57

3

我剛剛通過HTTPS連接到一個網站,並傳遞了一堆GET參數。然後我用wireshark來嗅探網絡。使用HTTP,URL將以未加密方式發送,這意味着我可以輕鬆查看URL中的所有GET參數。使用HTTPS,一切都被加密,我什至不能看到哪個數據包是GET命令,更不用說它的內容了!