【问题标题】:3rd party API service - web security and AJAX3rd 方 API 服务 - 网络安全和 AJAX
【发布时间】:2014-12-28 22:56:15
【问题描述】:

我正在尝试创建一个 Web 应用程序,该应用程序将包含一个从 Twitter 检索第三方数据的组件。假设我已经在 Twitter 上注册了我的应用程序并拥有一个令牌:

  1. 在我的服务器端代码中存储我的令牌的首选位置是(我正在使用 Node / Express 作为我的后端)?另一种方法是将其存储在我的客户端代码中,但这似乎非常危险,因为每个人都可以检查我的代码。

  2. 假设我确实将我的令牌存储在服务器端,这是否意味着如果我想对第 3 方 API(即 Twitter)进行 AJAX 调用,请求流将是从客户端到服务器,然后服务器到 3rd 方网络服务?

  3. 如果上述情况是准确的,那么我的服务器端代码是否必须包含一些异步回调/承诺逻辑,以便一旦从 3rd 方 Web 服务准备好数据,服务器将执行我的回调以发送数据返回客户端?

【问题讨论】:

  • 我最近问了一个与此相关的问题 - 我希望找到一些关于如何设置连接到 AJAX (stackoverflow.com/q/48947618/1727467) 的服务器端 API 请求的指示。如果您对如何使用 PHP 实现这一点有任何反馈,我们将不胜感激。

标签: javascript ajax security twitter callback


【解决方案1】:

此答案假设您正在使用 Twitter 的“仅应用程序身份验证”代表应用程序本身 (https://dev.twitter.com/oauth/application-only) 发出 API 请求。

  1. 您的服务器端代码是存储您不希望公开的任何 API 密钥的首选位置。 Twitter 的开发者指南指出“这些值应被视为与密码一样敏感,不得共享或分发给不受信任的各方。”

  2. 是的,使用像 Twitter 的“仅应用程序身份验证”这样的身份验证模型需要通过您的服务器端代码代理所有第三方 API 请求,以保护 API 令牌。对于任何需要在每个请求中传递一个简单的静态 API 密钥的第三方 API 也是如此。

  3. 虽然在技术上可能没有必要,但在发出第三方 API 请求时,最好在服务器端使用异步操作。这将为您提供一个更强大的架构来处理互联网请求的不稳定性,这是一个好处。

如果您打算代表您网站的访问者阅读或发布 Twitter 数据,请务必阅读更多关于获取用于 Twitter 的访问令牌的其他方法:https://dev.twitter.com/oauth/overview。例如,“三足授权”方法更适合这种情况,因为它为最终用户提供了一种安全的方式来提供他们的 Twitter 凭据并授权请求应用程序使用他们的数据。

【讨论】:

  • 感谢@Brice-Williams。即使这不适用于 Twitter,听起来首选的方法是使用您的服务器端代码从 3rd 方 API 联系和检索数据,然后让服务器将其传递回客户端,对吗?
  • 是的,对于使用服务提供商(应用程序)级别凭据的 API,首选方法是使用服务器端代码与 API 进行通信。对于需要最终用户凭据的第三方 API(例如:发布到 Twitter),首选方法是让用户将这些凭据直接提交给 API。 OAuth v2 使用这种方法,用户提交他们的凭据以换取授权代码。此授权码被交给应用程序,应用程序将其交换为访问令牌,然后代表最终用户对 API 请求有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多