【问题标题】:Limiting my RESTful API to just my application将我的 RESTful API 限制为我的应用程序
【发布时间】:2014-03-20 18:23:41
【问题描述】:

我最近开始使用 BackboneJS,对于一个新项目,我需要访问我拥有完全访问权限的服务器上的 MySQL 数据库。

我一直在阅读 RESTful API,现在我想设置一个,但我不太确定一件事:其他人能否通过我将设置的 RESTful API 将行插入我的数据库(使用Slim

我知道由于域策略相同,因此无法使用 JavaScript/AJAX。但是如果有人使用 PHP/cURL 或类似的东西向 API 发帖怎么办?是否可以使用此方法插入行而无需我在服务器端检查内容?

简而言之,我只是想确保我是唯一一个可以将东西插入(创建、放置、删除)数据库的人,我并不真正关心读取(获取)但我猜如果你不能插入你也不能读。

编辑

请注意,这个问题不是关于验证用户,而是关于其他人是否能够使用 cURL 或类似的东西简单地使用我的 API。

【问题讨论】:

  • 查看编辑。据我所知,该问题的答案与用户身份验证有关。我只想对我的应用程序进行身份验证(并且我的应用程序将有单独的用户)。简而言之,我不希望其他人能够使用服务器端部分 (API)。
  • 在这种情况下,我不确定我是否了解您的架构。您有一台运行 PHP 的服务器和另一台运行数据库的服务器?还是只有一台服务器?您意识到 Backbone 只是一个用于编写客户端 javascript 的库,它将使用某种服务器端语言访问您的 REST API,对吗?
  • 我有一个服务器 (PHP/MySQL) 和一个 Backbone 应用程序(将位于同一台服务器上)。我只是想确保其他人无法通过 API 执行 POST domain.com/dog 并添加记录。不过,您的喜欢读起来很有趣!谢谢你:)
  • RESTful 服务的工作方式是您的用户将在他们的浏览器上运行的backbonejs 的帮助下从他们的浏览器进行get/put/post/delete 调用。这些调用由 LAMP 堆栈处理。控制谁插入数据的唯一方法是以某种方式对其进行身份验证。他们是否从他们的骨干增强浏览器或 curl 发布是无关紧要的。

标签: php mysql rest curl


【解决方案1】:

限制您的 API 仅响应允许的服务器。例如:限制可以使用 API 的 IP 地址。

如果您的 RESTful API 和 MySQL 托管在同一台服务器上,您可以限制 API 仅在请求 IP 地址为 127.0.0.1 时才响应。

【讨论】:

  • 这是个好主意!是否可以允许特定的 URL,或者是否存在安全(或其他)问题?
  • 这取决于您如何实施上述解决方案。如果您在防火墙上限制可以使用 API 的 IP,我认为您不能只允许特定的 URL,但是如果您可以更改 API 代码,您可以让它检查每个请求的用户 IP,并且仅当 IP 与允许的 IP 匹配时才执行操作。然后,您可以为每个 URL 设置不同的条件。我想不出此设置可能会给您带来任何问题。
  • 感谢您的信息。我现在会接受这个作为答案,因为它看起来会起作用:)
【解决方案2】:

您需要设置身份验证,以便只有经过身份验证的用户才能使用 Restful 界面。然后,只要您不将您的凭据提供给任何人,您将是唯一可以使用它的人。

【讨论】:

  • 我不确定我是否理解正确,但您是说不可能(或至少很难)只允许一个 Backbone 应用程序使用 API?
  • 当 restful 请求到达服务器时,无论它最初来自哪个客户端应用程序,它看起来都是一样的——它是一个 HTTP 请求。你的restful服务器可以做的唯一一件事是拒绝一些请求而不是其他请求,就像viniclusmunich建议的那样检查源IP,或者检查请求本身是否有一些数据将其标识为应该接受的请求 - 即身份验证数据。
猜你喜欢
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2018-09-02
  • 2020-01-22
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2018-04-19
相关资源
最近更新 更多