【问题标题】:How can I protect my API and know what is calling it?如何保护我的 API 并知道调用它的是什么?
【发布时间】:2014-01-18 01:30:08
【问题描述】:

我正在构建一个 Web 应用程序和 Web API。 Web 应用程序将对服务器进行 ajax 调用并接收 JSON 结果。 Web API 也会发生同样的情况。

我计划要求开发人员使用密钥来访问 Web API,以便我可以为他们的使用收费。

问题是 Web 应用程序将使用 Web API 来获取网页的内容。有没有办法知道是我的 Web 应用程序使用了 Web API 还是有人试图劫持 API 以便他们不必为此付费?

我在我的服务器上使用 PHP。

【问题讨论】:

  • Web 应用程序也应该有一个 api 密钥。
  • 使用 JavaScript 的用户端将调用 API...用户可以密封该密钥。没有?

标签: api security oauth restful-authentication


【解决方案1】:

在尝试保护 Web 上的某些内容时,在尝试找到保护 api 的技术之前,考虑如何保护 api 提供的信息可能会很有用。

一个例子:

假设您的 api 提供伦敦当前的天气,而您的网络应用程序是一个开放的网页,它提供此信息同时还显示一些网络广告。您不希望其他人使用该 api 并在其他地方显示 Lonodn 天气而不显示网络广告,因为这会破坏您从这项服务中获得的唯一收入。

您可以通过提供即短时间密钥或其他复杂协议来限制对 api 的访问,但这里的问题是,您提供的信息(伦敦天气)无论如何都可供网页上的任何人使用。如果有人想“窃取”您的信息并在不同的网站上提供伦敦天气,他们只需编写一个脚本来加载您的 Web 应用程序,从网页读取信息并将其显示在他们自己的 Web 应用程序中。

如果一个人能够访问这些信息,那么他也可以编写一个脚本来读取这些信息并将信息显示在其他地方。

保护信息实际上更多的是限制您想授予访问权限,而不是如何他们应该获得访问权限。如果您或您的客户以一种或另一种形式在网络上免费提供此信息,那么您无法(从技术上)阻止其他人获取并重新分发它。

【讨论】:

  • 更多的是关于带宽。我不希望有人只是在我的 API 中插入插件并获得免费乘车服务。我希望他们能够访问 API,但需要付费。他们可以获取数据并重新分配它,我不在乎。由于数据经常变化......
  • 您确实在自己的 Web 应用程序中提供了数据。您是否向用户收取使用 Web 应用程序的费用?他们必须登录才能使用它吗?
【解决方案2】:

很难完全保护,但有一些技术可以提供帮助。 ApiAxle(免责声明:我的公司)为您提供使用short lived keys 的选项。在不知道您的密钥的情况下,盗贼将不可能生成这些。再加上速率限制,您离想要达到的目标越来越近了。

不是万无一失,而是一个开始。

【讨论】:

猜你喜欢
  • 2016-10-07
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多