[英]How can I Secure a JSON file with REST API or other methods?
我到處搜索,發現了很多我無法理解的信息。 我正在使用WAMP服務器,並設法執行“ SELECT Name FROM Tablename”查詢,並將數據傳遞給json_encode()
。 到目前為止,我都很喜歡結果,但是現在我需要保護服務器中的JSON文件,使其只能由運行我的Android應用程序的用戶訪問。
通過研究,我發現REST可能是我的解決方案,但我不了解如何針對我的情況實施它。 是否可以擁有服務器端REST安全性以及客戶端端? 我了解REST是Web服務,並且閱讀了其中Web服務基本上是網頁的教程。 我的首要任務是服務器端json文件,安全性和速度。 用戶將不會通過Android應用插入任何信息。 我正在考慮使用用戶名和密碼將Android應用程序部署到特定的json文件(驗證)。
如果您可以將我帶到與該主題相關的視頻教程或面向初學者的教程,將對您有所幫助。
這是我的具體問題?
請幫忙,謝謝。
解決方案:使用HTTP標頭
不安全的解決方案:
使用User-Agent標頭。
User-Agent: MyAndroidApp/1.0
更安全的解決方案:
首先,您需要使用SSL,因此沒有人可以輕易看到您的密鑰。
其次,您可以在您從android應用發出的請求的HTTP標頭中放置一個秘密密鑰:
X-Android-Secret-Key: fee400be-7d08-45c5-bf7c-ff79c35a838c
您在服務器上檢查標頭,並且僅在收到所需標頭時才將文件送回。 您可以將標頭保密,但不能讓SSL穿透。
我只會回答您關於應用程序身份驗證的原始問題。 您的其他問題屬於單獨的問題。
如果僅是您的客戶端和服務器,則可以(並且應該)使用相互認證的SSL,而無需購買任何東西。 您可以控制服務器和客戶端,因此每個服務器都應該只信任一個證書,一個證書屬於另一個證書,因此您不需要CA。
這是高級方法。 創建一個自簽名服務器SSL證書並部署在您的Web服務器上。 為此,您可以使用Android SDK隨附的keytool。 然后創建一個自簽名客戶端,並將其部署在應用程序中的自定義密鑰存儲區中作為資源(keytool也會生成此資源)。 配置服務器以要求客戶端SSL身份驗證,並僅接受您生成的客戶端證書。 將客戶端配置為使用該客戶端證書來標識自己,並僅接受服務器上為該部分安裝的一個服務器端證書。
逐步解決這個問題要比在此保證的更長。 我建議分階段進行此操作,因為網絡上有關於如何在服務器端和客戶端使用Android中的自簽名SSL證書的資源。 O'Reilly出版的《 Android平台的應用程序安全性》一書也有完整的演練。
通常,您會將證書/私鑰存儲在某種類型的密鑰庫中(如果使用的是Android,則為KeyStore),並且該密鑰庫將被加密。 該加密基於密碼,因此您需要(1)將該密碼存儲在客戶端的某個位置,或者(2)在用戶啟動客戶端應用程序時向用戶詢問密碼。 您需要做什么取決於您的用例。 如果(2)是可接受的,則說明您的憑據不受逆向工程的保護,因為它將被加密並且密碼不會存儲在任何位置(但是用戶每次都需要輸入密碼)。 如果您執行(1),則有人將能夠對客戶端進行反向工程,獲取密碼,獲取密鑰庫,解密私鑰和證書,並創建另一個能夠連接到服務器的客戶端。
您無法采取任何措施來防止這種情況; 您可以使代碼的逆向工程變得更加困難(通過混淆等),但是您無法使其變得不可能。 您需要確定使用這些方法可減輕的風險是什么,以及減輕該風險需要進行多少工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.