【问题标题】:How to secure api end point in php slim framework如何在 php slim 框架中保护 api 端点
【发布时间】:2019-06-20 20:11:55
【问题描述】:

我已经使用 php slim 框架创建了一个 api。但是我在保护我的 api 时遇到了问题。我只想访问经过身份验证的用户的 api。

我已经将用户登录添加到我的前端 Angular 项目中。那也行。但是当有人直接调用 api 端点时,它会显示与该端点相关的结果。

例如。我有以下端点。

slimapi/customers/view

此端点显示客户表中的所有数据。

当有人在浏览器中键入此 URL 时。它显示了与该 API 端点相关的所有数据。但是当有人尝试在不使用前端应用程序的情况下访问我的 api 端点时,我想向客户显示一些消息。

【问题讨论】:

    标签: php angular api slim secure-coding


    【解决方案1】:

    您可以管理 JWT 令牌

    当客户端向您发送登录请求并且登录请求和凭据匹配时,您将给客户端一个令牌。然后在每次请求后,检查令牌是否有效,然后授予访问权限。

    只看 JWT 的文档 https://github.com/tuupola/slim-jwt-auth

    【讨论】:

      【解决方案2】:

      您可以使用OpenID Connect protocol(基于 OAuth 2 和 JSON Web 令牌)。

      但这对于大多数情况来说可能有点过头了,因为只有当您必须在后端基础架构中的多个服务器和/或负载均衡器上扩展“会话”时,JWT 才有意义。基于 JWT 的令牌也无法进行简单的注销。如果开始在服务器端管理 JWT 黑名单,API 将不再是无状态的。

      我认为 HTTP 标头中有一个很长的 API-Token,例如一个 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,经典的 SessionCookies 也足够好并且非常安全。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 2017-12-12
        • 2013-11-28
        • 1970-01-01
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多