簡體   English   中英

如何使用REST API或其他方法保護JSON文件?

[英]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文件(驗證)。

我的申請流程

如果您可以將我帶到與該主題相關的視頻教程或面向初學者的教程,將對您有所幫助。

這是我的具體問題?

  • 我可以使用JSON解析圖像嗎?
  • mysqldump->轉換.csv文件---> SQLite是否更有效? (安全地)。
  • 假設數據庫中有100萬個條目,.CSV文件有多大?
  • 我該怎么做?

請幫忙,謝謝。

解決方案:使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM