2017-09-16 57 views
0

我們的應用程序使用客戶端/服務器架構,它在Windows上運行。對https服務器驗證用戶安全嗎?

我們的用戶需要通過http(或以後的https)用戶/密碼登錄客戶端,然後獲取他們的權限。

以前我們使用的是http協議,所以客戶端和服務器之間的契約可能已經被一些客戶端觀察到了。

現在,我們啓用了https(使用Let's Encrypt)協議,但我仍然不知道在避免用戶黑客身份驗證過程方面它是否可靠。

這裏是我所看到的潛在方法破解協議通過使用僞造的服務器

  1. 撥打IP到主機(實際主機名)映射hosts文件
  2. 做一個假的http服務器它使用上面的ip,並且與我們的服務器一樣提供相同的auth API。

客戶端使用cpprestsdk發送http請求。

由於Web服務器是公開的,用戶可以很容易地使用Chrome瀏覽器獲取ca,似乎很容易通過wireshark攔截https請求/響應。

我的問題是,我的假設是否有效?如果是這樣,我怎麼能做出更多的改變,以防止在進一步的版本中。

回答

0

你的問題是有效的,https很容易出現中間人攻擊(MITM)。您需要使用HTTP Public-Key-Pins響應標頭。它將特定的加密公鑰與特定的Web服務器相關聯,以降低僞造證書對MITM攻擊的風險。如果一個或多個密鑰被固定並且服務器不使用任何密鑰,則瀏覽器將不會接受該合法的響應,並且不會顯示它。 您可以在這裏閱讀詳細信息 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Public-Key-Pins

+0

中間人能修改數據嗎?由於網站擁有私鑰,我認爲中間人不能修改數據,對嗎? – user1633272

+0

用戶的瀏覽器將數據發送到服務器,但中間人攔截通信並可以查看/修改數據。 – ManishSingh

+0

用戶的瀏覽器將數據發送到服務器,但中間人攔截通信並可以查看/修改數據。中間人代表真實服務器向最終用戶出示他們的公共證書,他們創建類似的虛假網站並攔截請求。中間人有他們的證書的私鑰,以便他們可以查看數據。中間人使用服務器公共證書將請求轉發到真實服務器,並向最終用戶轉發響應。 – ManishSingh