2013-05-13 163 views
1

在閱讀了很多關於如何通過Android應用程序訪問外部數據庫(MySQL)的主題和問題後,我的問題是:如何確保只有我的應用程序能夠從該數據庫檢索數據?這關乎安全。Android應用程序和外部數據庫之間的安全

爲了訪問該數據庫,我打算在我的服務器上創建一個小的PHP文件,該文件將用作我的應用程序和我的數據庫之間的接口。但是,如果有人可以看到使用的URL,那麼他也可以與我的數據庫進行交互。那麼,我該如何防範呢?

謝謝。

回答

3

首先我會推薦你​​使用HTTPS傳輸協議,說實話,即使是自簽名證書secret(有特殊標誌等)也是很好的保護。

然後您在您的服務器上創建驗證此證書的Web服務(確保您沒有硬編碼證書密鑰)並且瞧。

編輯

假設你是在談論Android的我會向您提供keytool教程Here。我還假設你知道你必須創建自定義HTTPS處理程序,以便將證書放入請求中,如果您不知道如何執行此操作,則可以在我回到家時立即發佈它(我的項目已啓動我的私人電腦)。部分服務器端證書驗證是Here

+0

感謝您的幫助。當然,對於HTTPS。您能否向我提供關於serverside證書驗證的鏈接/教程? 「祕密擔保證書」是什麼意思? – 2013-05-13 09:53:28

+0

我的意思是說有兩種類型的證書:1.用於服務器驗證(不需要提供任何類型的附加信息,擁有由可信實體簽名的證書就足夠了)2.對於客戶端(使用證書對客戶端進行身份驗證的證書是有權這樣做的客戶端,並且通過輸入解密私鑰的正確密碼完成)我將編輯我的答案以發佈一些鏈接 – Mithrand1r 2013-05-13 10:13:13

+0

再次感謝您。所以,我需要使用keytool創建一個自簽名證書,然後檢查證書。是的,請你能分享一些你的代碼嗎? – 2013-05-13 16:57:11

0

如果攻擊者的動機很好,那麼您不能通過外部API將對數據庫的訪問限制爲僅限於您的應用。

您可以使其更難(例如使用存儲在您的應用中的攻擊者必須提取的祕密;使用Google's Play services等對您的應用程序進行模糊處理),並且可以創建威懾(限制使用API​​的許可),但從根本上說,您需要爲其他人準備好將請求發送到您的API,看起來像他們來自您的應用程序。

適合什麼樣的方法組合取決於第三方訪問對您的後果。

Twitter是使用許可控制第三方訪問其API的有趣案例研究。沒有什麼能夠阻止某人創造一個假裝成爲正式客戶的客戶,除非他們的威懾力足以讓Twitter發現,他們會通過合法渠道追隨他們。

+0

那麼Google Cloud Messaging呢?它會適應我的情況嗎? – 2013-05-22 17:42:00

+0

GCM現已成爲Google Play服務的一部分,同樣的故事--GCM將嘗試向已識別的應用發送消息,但有人可能會在假裝成您的應用的紮根手機上運行應用。 – Michael 2013-05-22 18:48:07

+0

嗯好的。因此,我會根據您的建議尋找最佳方式來保護我的API。感謝您的幫助。我會讓你知道我會怎麼做。 – 2013-05-22 22:54:14

相關問題