【发布时间】:2012-02-26 18:29:38
【问题描述】:
我正在使用 REST API 为我的应用程序制作 PHP 后端。
我想阻止其他人的脚本访问我的 API。我想过使用 $_SERVER['HTTP_REFERER'] 来避免它们。但是,in what situation does the HTTP_REFERER not work? 说我们不能依赖它。
还有其他方法可以将我的 API 仅限于我的客户端吗?
【问题讨论】:
标签: api rest http-referer
我正在使用 REST API 为我的应用程序制作 PHP 后端。
我想阻止其他人的脚本访问我的 API。我想过使用 $_SERVER['HTTP_REFERER'] 来避免它们。但是,in what situation does the HTTP_REFERER not work? 说我们不能依赖它。
还有其他方法可以将我的 API 仅限于我的客户端吗?
【问题讨论】:
标签: api rest http-referer
您应该查看OAuth 协议并为使用您的 API 的客户端实现它。
【讨论】:
您可以只使用普通的 HTTP 用户/通过身份验证。
【讨论】:
因此,您可以按照 Marcin 的建议实施 HTTP 基本身份验证。或者,您可以按照 HQarroum 的建议实施 OAuth。前者更容易实现。对于 HTTP BASIC,来自客户端的请求如下所示:
.. https://用户名:密码@yourbackend.host.com/resource/method/foo/bar ..
实现 HTTP 基本身份验证非常简单。在 Apache 中,请参阅 this。对于 nginx,请参阅this。
关于 OAuth,实现起来有点复杂。如果您正在研究 OAuth,并且您不需要不同的范围(访问不同级别数据的授权级别),那么您应该实现一个两条腿的 OAuth 流程。但是,我确实认为,如果您是受保护资源的唯一消费者,OAuth 可能会有点矫枉过正。
我建议在所有情况下都使用 SSL (https)。
【讨论】: