2016-01-06 42 views
0

我正在爲不同平臺(.NET(C#),Android(Java)和PHP)編寫3個應用程序。我正在使用C#來運行Windows PC上的WPF應用程序,服務器端的PHP和移動應用程序的Java。我正在使用一個MySQL數據庫,用於存儲3個應用程序將要使用的所有信息。
當我需要一些特定的東西來處理PHP時,我正在使用web請求到我的Apache服務器(基本上是JSON和POST)。
但是,如何安全的是:連接到外部數據庫併發送Web請求時,C#.NET和Java的安全性如何?

  • 當我通過C#和Java連接到MySQL數據庫?
  • 當我使用C#和Java發送GET和POST Web請求時?

你可以以某種方式窺視設備(PC/Android設備)和服務器之間的流量,並找出用戶和數據庫的密碼,甚至可以獲取發佈請求參數應用正在發送?
因爲我知道有很多網絡監控軟件,如果可能的話,我不會感到驚訝。
如果是,那該如何避免呢?

+1

讓我先問一個問題:「你是否轉移核彈發射代碼?」。相信我,當我說你甚至不應該打擾關懷。這是你無法阻止的事情之一,所以不要費心嘗試。 – Krythic

回答

1

「不是一個正確的問題,因爲答案取決於你所做的而不是語言中的特徵。他們都有很多很好的選擇來以各種方式實現各種類型的安全。你的情況真正重要的是機器如何溝通。

你能以某種方式窺探那是怎麼回事設備(PC/Android設備)和服務器之間的流量,找出用戶和數據庫的密碼

您的客戶(中PC和Android設備)不應該直接連接到您的數據庫。他們應該將請求提交給您的服務器,在那裏您擁有更多的控制權,並且可以對客戶端進行身份驗證並驗證其數據。服務器然後連接到數據庫。

如果客戶端直接調用數據庫,不僅憑證通過互聯網傳輸,還必須以某種形式在客戶端本地存在。這意味着有人可能會破解你的應用並訪問它們。

甚至獲取應用程序發送的發佈請求參數?

是的,這些可以被攔截和閱讀。再一次,防止這是你如何實現溝通的問題。使用HTTPS協議,您可以在C#和Java中執行這些協議,並且您的請求內容將不會被第三方攔截。

+0

謝謝。這個答案很有用!現在一切都更加清晰了:) – WildChild

1

當您的流量被發現或攔截時,它可以自由解讀給讀者。您可以在瀏覽器的控制檯窗口中看到此類流量的示例,或者如果您想查看實際應用流量,請使用代理(例如Fiddler2)。

如果您想阻止您的流量被讀取,您必須採取措施確保授權和訪問控制。您可以通過使用TLS/SSL加密流量來完成此操作。如果您有網絡端點,則通常可以啓用https通過庫配置。您可能需要將它作爲參數傳遞給構建連接的代碼。

此外,最好不要在應用程序輸出中泄漏敏感信息。您將希望使用強密碼並避免以明文形式存儲或發送這些密碼。

我還建議你打破小塊位的保護需求。

示例:

您正在使用許多不同的技術。這些都有與安全有關的最佳實踐和指導方針。將您的應用程序與網絡/運營資產分開。加密您的通訊是您應用程序的一種措施。而你的MySQL配置完全以不同的方式工作,大多數是槽配置。 「Java和C#有多安全?」

1

爲什麼從Android/WPF應用程序直接連接到數據庫?

如果MySQL DB位於安全服務器上,可能會將數據庫調用/服務包裝在PHP解決方案中實現的RESTful API中,然後從您的客戶端應用程序調用API,這樣也可以避免編寫SQL語句和DB多語言(Java/C#)

特定的任務,不知道你的情況使得它很難,但...