簡體   English   中英

如何在php slim框架中保護api端點

[英]How to secure api end point in php slim framework

我已經使用php slim框架創建了一個api。 但我遇到了保護我的api的問題。 我只想為經過身份驗證的用戶訪問api。

我已經將用戶登錄添加到我的前端角度項目中。 那也行。 但是當有人直接調用api端點時,它會顯示與該端點相關的結果。

例如。 我有以下端點。

slimapi/customers/view

此端點顯示客戶表中的所有數據。

當有人在瀏覽器中鍵入此URL時。 它顯示與該api端點相關的所有數據。 但是當有人試圖在不使用前端應用程序的情況下嘗試訪問我的api端點時,我想顯示一些客戶消息。

您可以管理JWT令牌

當客戶端向您發送登錄請求時,如果登錄請求和憑證匹配,則您向客戶端提供令牌。 然后在每個請求之后,檢查令牌是否有效然后您提供訪問權限。

請參閱JWT的文檔https://github.com/tuupola/slim-jwt-auth

您可以使用OpenID Connect協議 (基於OAuth 2和JSON Web令牌)。

但是對於大多數情況來說這可能是一種過度殺傷,因為如果你必須在后端基礎設施中的多個服務器和/或負載平衡器上擴展“會話”,那么JWT才有意義。 基於JWT的令牌也無法進行簡單的注銷。 如果您開始在服務器端管理JWT黑名單,則API將不再是無狀態的。

我認為HTTP標頭中的一個非常長的API令牌 ,例如UUID,在大多數情況下都是安全且足夠好的。

HTTP Authorization請求標頭包含用於向服務器驗證用戶代理的憑據,通常在服務器響應401 Unauthorized狀態和WWW-Authenticate標頭之后。

句法:

Authorization: <type> <credentials>

基本認證

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

基於令牌

Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9...TJVA95OrM7E20RMHrHDcEfxjoYZgeFONFh7HgQ

UUID作為令牌

Authorization: Bearer bb79dfb5-17fd-4ebc-acd5-548e308e5f9a 

還要確保所有API請求都是SSL(HTTPS)加密的。

PS:如果您只想為Web應用程序保護您的API,那么經典的Cookies Session也非常安全且非常安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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