在閱讀了很多關於如何通過Android應用程序訪問外部數據庫(MySQL)的主題和問題後,我的問題是:如何確保只有我的應用程序能夠從該數據庫檢索數據?這關乎安全。Android應用程序和外部數據庫之間的安全
爲了訪問該數據庫,我打算在我的服務器上創建一個小的PHP文件,該文件將用作我的應用程序和我的數據庫之間的接口。但是,如果有人可以看到使用的URL,那麼他也可以與我的數據庫進行交互。那麼,我該如何防範呢?
謝謝。
在閱讀了很多關於如何通過Android應用程序訪問外部數據庫(MySQL)的主題和問題後,我的問題是:如何確保只有我的應用程序能夠從該數據庫檢索數據?這關乎安全。Android應用程序和外部數據庫之間的安全
爲了訪問該數據庫,我打算在我的服務器上創建一個小的PHP文件,該文件將用作我的應用程序和我的數據庫之間的接口。但是,如果有人可以看到使用的URL,那麼他也可以與我的數據庫進行交互。那麼,我該如何防範呢?
謝謝。
如果攻擊者的動機很好,那麼您不能通過外部API將對數據庫的訪問限制爲僅限於您的應用。
您可以使其更難(例如使用存儲在您的應用中的攻擊者必須提取的祕密;使用Google's Play services等對您的應用程序進行模糊處理),並且可以創建威懾(限制使用API的許可),但從根本上說,您需要爲其他人準備好將請求發送到您的API,看起來像他們來自您的應用程序。
適合什麼樣的方法組合取決於第三方訪問對您的後果。
Twitter是使用許可控制第三方訪問其API的有趣案例研究。沒有什麼能夠阻止某人創造一個假裝成爲正式客戶的客戶,除非他們的威懾力足以讓Twitter發現,他們會通過合法渠道追隨他們。
那麼Google Cloud Messaging呢?它會適應我的情況嗎? – 2013-05-22 17:42:00
GCM現已成爲Google Play服務的一部分,同樣的故事--GCM將嘗試向已識別的應用發送消息,但有人可能會在假裝成您的應用的紮根手機上運行應用。 – Michael 2013-05-22 18:48:07
嗯好的。因此,我會根據您的建議尋找最佳方式來保護我的API。感謝您的幫助。我會讓你知道我會怎麼做。 – 2013-05-22 22:54:14
感謝您的幫助。當然,對於HTTPS。您能否向我提供關於serverside證書驗證的鏈接/教程? 「祕密擔保證書」是什麼意思? – 2013-05-13 09:53:28
我的意思是說有兩種類型的證書:1.用於服務器驗證(不需要提供任何類型的附加信息,擁有由可信實體簽名的證書就足夠了)2.對於客戶端(使用證書對客戶端進行身份驗證的證書是有權這樣做的客戶端,並且通過輸入解密私鑰的正確密碼完成)我將編輯我的答案以發佈一些鏈接 – Mithrand1r 2013-05-13 10:13:13
再次感謝您。所以,我需要使用keytool創建一個自簽名證書,然後檢查證書。是的,請你能分享一些你的代碼嗎? – 2013-05-13 16:57:11