2010-01-18 89 views
0

我正在爲Android平臺創建一個應用程序,該應用程序將使用https連接一個站點。即使使用有效的SSL證書,它也不能連接到任何其他站點。我希望它能夠抵禦每一種表單重定向(例如假裝成我需要連接的那個網站)或其他「攻擊」。不幸的是,我無法在Android中找到任何有關SSL的良好教程...你知道嗎?我會很感激一些鏈接或建議。或者,也許你能給我一些代碼片段?我的應用程序準備使用HttpURLConnection或HttpClient - 我選擇的路徑沒有區別。與一個站點(Android)的HTTPS連接

預先感謝您:)

回答

1

硬編碼URL不會解決這個問題嗎?

+0

URL是硬編碼:)我只是害怕一些未知的,討厭的網絡可能會發送http請求到不同的ip(不知道它是否可能)。事情是我想只接受一個證書,但我不知道如何適當地實例化HttpClient ... – omarcin 2010-01-18 20:30:06

+0

我不認爲我遵循。你想讓你的設備使https連接到一個地址。硬編碼URL /或IP將解決它。請解釋您如何期待「惡意網絡」從設備發出http請求,並在您的應用程序內發出請求。 – 2010-01-18 21:53:24

0

如果你真的那麼偏執,那麼對URL進行硬編碼並不安全,因爲當DNS服務器中毒時,URL可以指向不同的IP。這些不太可能發生。

硬編碼IP可以幫助避免問題,因爲直接訪問服務器時不需要DNS名稱解析。

0

我想指出,提問者的偏執很有道理。假設該網站有一個由有效的證書頒發機構簽署的證書(並且該應用程序會檢查它),他應該是安全的,但是正如最近的歷史證明的那樣,CA不是完全正確的。

單獨對網址進行硬編碼並不能防止中間人攻擊。如果您知道只打算連接到一個站點,則可以將該站點的證書或公鑰硬編碼到您的應用中,這個過程稱爲證書鎖定。這樣可以確保除非有人獲得該站點私鑰的副本(無論如何,您幾乎都會陷入沉默),但您可以確信您正在與該站點通信,因爲只有站點的私鑰持有者才能發送消息可用網站的公鑰解密。供參考:

實現:
https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#Public_Key_Checks

一般信息:
http://www.netspi.com/blog/2013/04/01/certificate-pinning-in-a-mobile-application/

偏執狂是標準程序與安全問題時,有很好的理由。