2012-09-30 46 views
0

可能重複:
Best Practices for securing a REST API/web service安全REST API應用

我正在做一個桌面應用程序,並在此應用程序,我將能夠創建/讀取/更新/刪除數據在數據庫中。 對於這個動作,我做了一個php REST api,所以我可以簡單地得到一個完整列表/api/users和選擇用戶1與/api/users/1。 如果你知道更好的方法你可以告訴我的課程,我認爲這是一個'好'的方法來做到這一點。

現在的問題是,我想先登錄到應用程序,所以我登錄並可以發送數據,但如何認證?

我使用C#+ PHP的REST API。爲了安全起見,我想我想知道用戶每次請求都經過身份驗證。使用REST api,我可以非常容易地向服務器發送一些數據,但是如何以適當的方式保護這些數據?

我希望我的問題很清楚。

+0

您可以使用HTTP級身份驗證(例如HTTP基本),或者需要在每次請求,等等等等API /用戶密鑰。沒有正確/錯誤的做法。 –

+0

不知道這對你是否有趣。 [Codeigniter Restserver](https://github.com/philsturgeon/codeigniter-restserver) – zer02

回答

2

如果你想創建自己的REST API和關閉現有框架的不行,我會建議一個簡單的登錄系統,該系統將返回認證某種關鍵。

假設你的應用程序發出API請求登錄,您會驗證用戶的登錄/密碼,並返回將被用於後續請求的關鍵。

理想情況下,你會希望你的API密鑰的一段時間(如會話cookie)後到期,迫使用戶重新進行身份驗證,以避免會話劫持的潛在問題。

0

你有幾個解決方案。一種是使用HTTP身份驗證,這是httpd內置的功能,因此您只需要將其設置爲.htaccess即可。

或者你可以授予任何用戶的獨特應用令牌(即「富」),並且每個API方法將需要該應用程序令牌被作爲即第一個參數傳遞

,或者你實現API的方法,如loginlogout,如果根據給定的I/P登錄成功,然後爲該用戶創建會話條目,並返回任何唯一的會話ID,如前面的示例中所述,每個API方法都將要求使用

最後一個是最好的,你可以控制訪問權限,如果任何I/P受到威脅,那麼你可以通過將密碼更改爲新密碼來輕鬆阻止攻擊者。而且你更瞭解你的用戶。只需在應用程序令牌你不知道的唯一用戶可以有多少是