2014-03-24 32 views
0

我開發了一個Android應用程序。這個應用程序使用HttpClient和HttpPost類將數據發送到我的web服務器(apache + mysql)。Android和Apache以安全的方式

但是這樣一個惡意的攻擊者可以發送一個自定義的post請求到web服務器並破壞我的數據庫。

1 - 有可能在應用程序發送數據之前加密數據,然後用一些共享密鑰算法在網絡服務器中解密數據?還是我說胡話?

2 - 如果以前的解決方案不是一個好的解決方案,我需要以總結的方式實現ssl解決方案?

我讀過很多關於ssl和android的文章,但我仍然有點困惑。我想我必須在應用程序和apache上進行代碼更改。任何人都可以告訴我一些教程來處理這個問題嗎?

+0

SSL不會保護您免受數據庫攻擊。您的服務器**必須**驗證發送給它的所有內容,並拒絕任何不喜歡的內容。 – 2014-03-24 22:48:17

回答

1

您不一定需要加密您的數據(僅當您希望阻止攻擊者讀取數據時才需要)。

你需要的是:

  1. 認證:(即您的應用程序)從受信任的用戶因此,只有請求被接受
  2. 驗證:因此,只有「正確」的請求被處理

認證可以像在您的Apache服務器上設置HTTP Basic Access Authentication一樣簡單。您將設置用戶和密碼,並讓您的應用程序使用這些憑據訪問服務器。任何未經身份驗證的請求將被拒絕,並提供403

不幸的是基本身份驗證主要是不安全的,因爲任何查看您的應用程序和服務器之間的流量的人都可以獲取憑證,然後僞造自己的請求。

OAuth將是更好的選擇,雖然它更多地涉及。這裏有一個很好的教程,涵蓋了客戶端:http://nilvec.com/implementing-client-side-oauth-on-android.html

驗證意味着你需要在使用它之前對數據進行清理。您的服務器應用程序應該假設所有數據都有可能是錯誤或危險的,並在處理之前正確地過濾所有輸入。