2011-11-29 28 views
3

我使用SLIM框架在php中設計了API。我可以像這樣訪問這些API:我該如何爲我的API提供安全性

http://192.168.1.210/getSchool 

此API用於獲取有關學校的信息。我在我的android應用程序中使用這些API。現在我想確保我的這些API的安全。所以沒有人可以通過身份驗證手段訪問這些API,只需在地址欄中輸入上述URL即可獲得學校列表。

我想讓用戶首先使用我的android應用程序登錄,然後他或她可以使用我的api,沒有人可以直接訪問我的apis。

請給我你寶貴的建議。

預先感謝您。

回答

1

一旦用戶註冊了您的應用程序,您可以生成&在數據庫中分配一個API密鑰(也許是一個哈希),您可以返回到手機。每次手機向API發送請求時,它都會通過它們的API密鑰進行發送,您可以使用它們的數據庫條目進行驗證。

這也應該通過SSL來完成,以避免MITM攻擊/查看API密鑰。

還有其他方法可用:Looking for suggestions for building a secure REST API within Ruby on Rails(語言不可知)。

+0

我認爲你是對的囚犯,但請你可以給我的任何實例或網絡鏈接,所以我可以實現任何你建議我有效的方法。 –

+0

請參閱我對其他可用方法的編輯,以及此鏈接:http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service這也可能提供進一步的幫助。就實際文件而言,這將告訴你如何做到這一點 - 我不確定存在一個。 – Prisoner

0

您應該爲每個用戶在註冊並存儲在服務器上時創建UID和密鑰。最初使用https將這些傳遞給用戶。用戶將存儲這兩個值(確保密鑰安全)。

當用戶想發送api請求時,他將創建請求url,然後使用密鑰+時間戳對其進行哈希處理,並將UID,哈希和時間戳添加到請求併發送到服務器。

服務器提取UID,然後從數據庫獲取祕密,然後使用密鑰+時間戳參數生成請求(無UID,哈希和時間戳)的哈希值。

如果生成的散列和來自url匹配的散列參數繼續執行請求或忽略它。

或者

實施OAuth

相關問題