第三方API服务 - 网络安全和AJAX

时间:2014-12-28 22:56:16

标签: javascript ajax security twitter callback

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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