在HTTPS安全模型中,最弱的部分是瀏覽器中可信CA的列表。有許多方法可以將其他CA添加到列表中,用戶將信任錯誤的人。如何防止服務器端HTTPS man-in-middle攻擊?
例如,您公司的公用計算機或PC。管理員可能會強制您信任自己頒發的CA,但使用HTTPS中繼的HTTPS代理服務器可能會非常不安全。因此,即使瀏覽器告訴您您的SSL連接可信,他們也能夠偵測到您的消息,登錄名和密碼。
在這種情況下,Web應用程序開發人員可以做些什麼來保護用戶和系統?
在HTTPS安全模型中,最弱的部分是瀏覽器中可信CA的列表。有許多方法可以將其他CA添加到列表中,用戶將信任錯誤的人。如何防止服務器端HTTPS man-in-middle攻擊?
例如,您公司的公用計算機或PC。管理員可能會強制您信任自己頒發的CA,但使用HTTPS中繼的HTTPS代理服務器可能會非常不安全。因此,即使瀏覽器告訴您您的SSL連接可信,他們也能夠偵測到您的消息,登錄名和密碼。
在這種情況下,Web應用程序開發人員可以做些什麼來保護用戶和系統?
作爲一個Web應用程序開發人員,您可以做的事情很少。
這個問題需要進一步處理。
如果世界各地的人想要:
a。將假根CA放在某人的電腦上
b。根據該證書爲您的域名簽發一份證書CA
c。模仿你的網站
d。將您域的某人的本地DNS條目指向不同的IP
上述步驟都不涉及您的應用程序涉及或諮詢,因此這是良好的網絡管理和安全性非常重要的地方。
除此之外,也許有人有理由在他們的個人網絡上進行本地化。我是誰來阻止他們?
這實質上就是企業網絡代理過濾器所做的事情,它們在自己的權利範圍內。
至於阻止惡意的人採取上述步驟這就需要把你的客戶機管理員的東西。
一些最近的問題http://stackoverflow.com/questions/19993696/is-there-any-way-to-access-ssl-certificate-details-using-javascript指向我一個可能的解決方法。這個項目https://github.com/digitalbazaar/forge可以幫助JavaScript讀取SSL信息,如果CA發行者名稱不匹配,可能有助於提供某種警報。 – 2014-02-18 04:49:37
從理論上講,如果用戶的終端被對手擁有的,你已經失去了並沒有什麼,你可以做些什麼 - 如果推來推去,他們可以過濾掉你的對策,甚至刮和惡搞整個網站。
實際上,你可以做一些事情來讓對手的工作變得更難,但是這是一場軍備競賽。您可能必須使用惡意軟件針對掃描程序使用的所有相同對策 - 因爲從攻擊者的角度來看,您的網站會通過嘗試阻止自身被覆蓋而惡意行爲! - 並且知道,如果你的對手足夠關心,你所做的任何事情都會迅速反擊。
例如,您可以打開套接字或使用JavaScript或applets中的XmlHttpRequest
,但無法阻止對手更新其過濾器以去除所添加的任何內容。
通過發佈多態輸出或使用其他反向工程技術,您可能會獲得更多里程數,因此看起來網站沒有任何兩次命中產生髮送到瀏覽器的類似代碼/資源。這是一個過多的工作,但如果他們想要在中間扮演一個人,那麼就會讓你的對手陷入謎團。
要安裝受信任的根CA證書,需要訪問用戶計算機。一旦你訪問了一臺機器,與安裝證書相比,竊取數據的方法要簡單得多,所以這種情況在SSL安全性的有效性方面並不真正有效。 SSL更能夠防止中間人攻擊,用戶只需嗅探通過線路發送的流量,而無需直接訪問用戶計算機。 – TheCodeKing 2010-09-22 23:56:26