保护REST API和Slim框架

Dre*_*rew 18 php api rest slim

我是REST API的新手,我意识到已经发布了很多问题.然而,仔细阅读这些实际上让我对如何处理这个问题更加困惑.

我使用Slim Framework创建了一个REST API,我只是用来传输数据.我不会使用用户登录或身份验证,所以我相信要保证这一点我只需要一个使用公钥和私钥的系统,但我不确定.

如果有人对正确/最安全的方法有所了解,或任何教学/资源都很棒.任何帮助表示赞赏.

Che*_*eso 16

您可以使用SSL加密传输中的数据.

但SSL只是加密; 服务器端ssl不对客户端进行身份验证,也不进行授权.您可以考虑授权,因为回答问题的是呼叫者可以做他要求的事情吗?. 认证建立所述呼叫者的身份或认证通常是这样做的授权必要的第一步.有时你不需要"整个身份" - 你只需要确定一个特定的方面.例如,自动洗手间门不需要知道你是,但只有你是男性或女性才能确定身份.同样,有些服务并不关心你是谁; 如果您从特定网络(ip白名单)拨打电话或携带特殊令牌,他们将允许访问.

要允许服务器区分授权和未授权的呼叫,您有一些选择:

  • IP白名单.如果您知道将调用您的服务的应用程序或代理的IP地址,您可以在服务实现中指定该IP地址.该服务可以检查传入请求的IP并拒绝那些不在白名单中的请求.这是基于呼叫者地址的"隐式"授权.

  • 应用程序在每次通话中提供的秘密令牌.您说您不想进行身份验证,但这是一种身份验证形式.你可以称之为"持票人令牌".携带此令牌的任何人都获得授权.在您的服务器中,您将检查令牌的值并拒绝任何与众所周知的值不匹配的呼叫.这类似于IP白名单,除了明确传递令牌,并且与网络地址没有任何关系.

  • 令牌+密钥对.这就像用户名/密码,但它可用于验证应用程序.使用此选项可提供应用程序本身的标识.如上所述检查服务方面.

  • 用户名/密码.验证应用程序的用户.

您可能希望将它们组合在一起以生成所需的解决方案.换句话说,客户端请求需要来自正确的I地址,并且需要具有应用的令牌/密钥以及用户的用户名/密码,以便被视为"已授权".