【问题标题】:Architecture of API Key ImplementationAPI 密钥实现的架构
【发布时间】:2015-07-08 18:53:53
【问题描述】:

我可能错了,因为我对 API Key 基础知识非常陌生。如果我错了,请纠正我。

我有一个JavaScript 的前端和一个PHP 的后端应用程序(可以是任何技术)。我想从 AJAX 的后端应用程序中公开一些 API。这样第三方开发人员就可以从他们的应用程序中使用我的 API,而不必担心后端的实际实现。

我将向开发人员公开一个 API 密钥,以便他从应用程序发出的任何请求都使用该 API 密钥,并且我可以记录哪个 API 密钥正在访问该应用程序。

由于它是对服务器的 AJAX 调用,因此他将 API 密钥存储在我将提供的 JS 文件中。

问题是: 如果有人使用 seek 进入他拥有的 JS 文件,则可以轻松获得为其他应用程序设计的 API 密钥。我应该如何以安全的方式实现这一点。

有人可以帮忙吗?

【问题讨论】:

  • 您可以在引荐来源网址(API 调用的来源)和您提供的密钥之间建立关系。
  • 这不是伪造的吗..?它是一个数据包数据,您可以使用 WireShark 更改它。还假设如果这个人有 PhoneGapped 一个 JS 应用程序,那么呢??
  • 完全纯 JS 应用程序几乎不可能通过您的标准来保护。也许您可以构建一个基于令牌的方法,首先登录/握手并发送一个有效期很短的密钥,以包含在每个后续的 API 调用中。您还可以查看 Facebook 如何在其 API 上处理这些情况。在他们的情况下,JS 应用程序不需要安全密钥,只需要 appId。
  • 你不能。为了使其在浏览器中安全,您必须添加安全标头,如果它们位于不同的域中,则可能使用 CORS。办公室。您必须检查请求的域。我想这就是你能做的。来自浏览器的每个请求都可以伪造。
  • @inf3rno:你们如何实现安全标头?

标签: ajax api rest api-key


【解决方案1】:

纯 javascript 无法对最终用户隐藏,因为最终用户是执行代码的人。

您可以使用经过混淆处理的 javascript,但总有可能进行逆向工程。

【讨论】:

  • 我就是这么想的。但是,您将如何使用 AJAX 调用使用 API 密钥向某些 API 发出请求?
  • 你没有。您使用基于服务器的代码来检索 API 响应
  • 不明白...你的意思是 AJAX 不应该调用 API,API 应该通过另一个服务器端代码访问,比如 CURL。?
  • 我的意思是,您不会在 javascript 代码中存储敏感信息。因此,如果您不希望您的 API 被其他非授权用户滥用,您应该要求第三方开发人员使用服务器端脚本(如 PHP)将数据发布到您的 Web 服务,而不是 ajax。在 PHP 中可以使用 curl 或 file_get_contents 来模拟 ajax 请求。
  • 嘿.. 见 this,他们在 JavaScript 中使用 API 密钥。这就是我正在寻找的东西。他们正在验证应用程序的权利。?他们是怎么做到的?
猜你喜欢
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2012-06-22
  • 2013-05-10
  • 2017-04-20
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
相关资源
最近更新 更多