2010-05-24 100 views
2

在我的應用程序中,用戶可以將文件上傳到FTP服務器。要打開連接並寫入服務器,我需要使用用戶名和密碼。在代碼中使用FTP用戶名和密碼看起來像是一個安全問題。iPhone SDK:在代碼中存儲用戶名和密碼

有人可以告訴我如何安全地將其存儲在我的代碼中並使用它連接到服務器?

非常感謝!

回答

1

如果這是FTP,那麼您將通過網絡以未加密方式發送證書。如果您希望保護這些證書,那麼您已經失敗了,因爲任何有興趣的人都可以輕鬆地從無線網絡中嗅出密碼。我有一個簡單的鑽機設置,只是從iPhone的這種網絡嗅探。

如果FTP是您唯一的選擇,那麼您應該承認這些憑據是公開的,並且要麼使連接匿名,要麼強烈限制您提供的憑據可以執行的操作。

特別是,您應該確保憑據(或匿名帳戶)只能寫入而不能讀取。如果您的FTP服務器具有可以讀取和寫入的衆所周知的憑據,那麼它將很快成爲軟件和色情副本的主機。

如果您可以使用其他協議(HTTPS,SFTP等),那麼這很好,但它實際上並不會節省您的時間。如果您使用軟件發送登錄憑證,並且它們有任何價值,它們將被反向設計。因此,雖然我建議使用HTTPS上傳文件,但仍不能依賴您在程序中發送的證書的安全性。您仍然必須確保您的Web服務器能夠容忍攻擊者隨意發送它。

+1

儘管有用的信息,這並沒有真正解決這個問題。 – coneybeare 2010-05-24 16:43:53

+1

構成的問題沒有解決辦法;這是一個無法解決的安全問題。解決方法是詢問正確的安全問題,這就是這個問題的答案。弗蘭科德威爾解釋得很好。 – 2010-05-24 17:03:45

3

使用FTP用戶名和密碼 代碼看起來像是一個安全問題。

那是因爲它是:-)

有人能告訴我我該怎麼 安全這個存儲在我的代碼,並使用 它連接到服務器?

沒有辦法這麼做 - 您正在尋找永久運動機器的安全等價物。你所做的任何事情都將通過默默無聞的安全來實現,並且會被反向設計。另外,當你在代碼中嵌入祕密時,任何失敗都將是災難性的,並且沒有簡單的方法來恢復。

你想用這些憑據來實現什麼?你是否希望強制服務器只能用你的代碼訪問?如果是這樣,這也是一個不可能的任務,並且你應該簡單地忘記嘗試它。

您最好嘗試認證用戶,即讓他們使用個人用戶名和密碼 - 這實際上取決於您的實際業務級別安全要求。

1

正如其他人所說,由於FTP是通過電報明文,你在那裏的損失。

但是,在設備上存儲信息有安全的方式,不管它是什麼。這種機制通常被稱爲鑰匙串,你可以按照steps outline here來做到這一點。您還需要閱讀Security Overview。 GenericKeychain和CryptoExcercise code examples here都是很好的參考。