2017-10-10 204 views
0

我的項目包括一個Web應用程序,一個移動應用程序和一個REST API模塊。如何在移動應用程序和服務器之間保護REST API

該移動應用程序是用Ionic 3 for android製作的,並使用位於example.com/api.php地址的REST API在服務器上使用https。該API可以訪問MySQL數據庫。

對於訪問API的用戶,我必須創建API函數/註銷的登錄/訪問權限,因爲他們已經擁有在Web應用程序中創建的帳戶。

主要關心的是實現安全登錄。意思是說,如果有人試圖在未經授權的情況下訪問我的API(知道地址,函數名稱或使用的參數名稱)以收回錯誤消息。爲了訪問API,您必須登錄並有權訪問某個部分(我有多個訪問級別)。 但是,如何檢測訪問我的REST API的用戶是否已登錄並具有適當的權限?

計劃:

  1. 對於登錄步驟 爲了訪問REST API我有在應用程序的用戶名/密碼登錄。我檢查憑證是否正確(如果用戶存在,則確定訪問級別),並根據需要(令牌)返回帶有用戶標識和其他參數的JWT。將電話本地存儲在JWT中。

  2. 確保訪問REST API函數 問題是:我該怎麼做?如何從我的REST API訪問安全的功能?

    • 對於我向REST API發出的每個請求,我是否也應該從本地存儲器發送令牌並在服務器端驗證它?
    • 如何在服務器上執行驗證?我是否將令牌存儲在設備上以及服務器上,並對每個請求進行比較?

非常感謝!

+0

有很多方法可以做到這一點,包括用戶註冊,使用令牌等。在Stack Overflow上,你應該顯示你已經嘗試了什麼,什麼不工作。有關如何發佈您的問題的建議,請參閱https://stackoverflow.com/help/mcve。這樣的問題往往被認爲是廣泛的或基於意見的,因爲有很多方法可以做你正在嘗試的事情。過去,我使用了令牌方法,在您登錄的位置爲該令牌提供所有REST請求,並且驗證該令牌的服務器仍然有效,如果是,則執行請求。 –

回答

1

有多種方式可以做到這一切都取決於你。因此,我分享了我通常使用的方法,但並不是聲稱這是最安全的方法。

我們使用encryption,decryptionprivate key。例如:

註冊用戶網絡服務

前。我們有4個參數1.用戶名2.姓名3.電子郵件4.密碼。與我的註冊網絡服務。我們將創建SHA256 Hash與私鑰使用數據concat。那麼我們會將hash密鑰傳遞給服務器,並且在服務器端我們將使用相同的方法生成哈希密鑰並將兩者進行比較。

ex。字符串與私鑰= usernamenameemailpasswordprivatekey sha256的字符串= 7814b2d22af647308884acff0be4c675b7f72ba000cf1e8390520100cc930e74

您可能有任何序列的數據字符串和相同的方法將與您的服務器一起工作。始終將SSL certificate用於您的服務器以獲得更高的安全性。

相關問題