2010-06-19 28 views
1

我正在寫一個類似於omegle的小應用。我有一個用Java編寫的http服務器和一個html文檔的客戶端。通信的主要方式是通過http請求(長輪詢)。在使用https時防止中間人攻擊

我已經通過使用https協議實現了某種安全性,並且我爲每個連接到服務器的客戶端都有一個安全ID。當客戶端連接時,服務器爲其提供一個安全性,客戶端在需要請求時必須始終發送它。

我很害怕這個中間人在這裏發作,你有什麼建議可以保護這個應用程序免受這種攻擊。

請注意,這個應用程序是爲理論目的而構建的,它不會因爲實際的原因而被使用,因此您的解決方案不一定非常實用。

回答

3

HTTPS不僅可以進行加密,還可以對服務器進行身份驗證。當客戶端連接時,服務器顯示它的域有一個有效和可信的證書。該證書不能簡單地被中間人欺騙或重播。

+0

+1,因此它停止MITM。 – 2010-06-19 12:49:21

+0

只有當客戶端設置爲驗證證書正確時,纔會出現這種情況。我想知道是否有任何數據表明有百分之幾的客戶端打開了這個數據,例如,當人們編寫客戶端應用程序來使用API​​時。有沒有哪家公司看到這樣的文檔能夠幫助客戶端應用程序正確地驗證證書?謝謝! – 2012-08-05 19:46:35

1

僅僅啓用HTTPS並不夠好,因爲網絡帶來了太多複雜因素。

首先,確保您在cookies上設置了安全標誌,否則可能會被盜。

確保用戶只能通過在地址欄中輸入https://<yourdomain>來訪問網站也是一個好主意,這是確保使用有效證書進行HTTPS會話的唯一方法。當您鍵入https://<yourdomain>時,瀏覽器將拒絕讓您進入該網站,除非服務器提供了<yourdomain>的有效證書。

如果您只在前面輸入https://而不是輸入<yourdomain>,則瀏覽器不會在意發生了什麼。這有兩個含義,我能想到的把我的頭頂部:

  1. 攻擊者重定向到一些Unicode的域具有類似名稱的(即:看起來相同,但有一個不同的二進制字符串,因此是一個不同域),然後攻擊者提供該域的有效證書(因爲他擁有它),用戶可能不會注意到這一點... ...

  2. 攻擊者可以模擬服務器,但沒有HTTPS,他會讓他擁有與真實服務器之間的安全連接,併成爲您與服務器之間的明文代理,現在他可以捕獲所有流量並執行任何他想要的任務,因爲他擁有您的會話。