从客户端使用访问令牌的安全注意事项(浏览器和JavaScript)

时间:2014-01-22 17:16:14

标签: security oauth client-side

我正在尝试从Facebook,Google +,Instagram等多种社交网络服务构建内容聚合器。这既可以查看也可以发布。我的用例就像

  1. 用户授权他们想要的任何网站。系统存储令牌(离线令牌或长期令牌,以便用户不必经常重新授权)
  2. 在内容屏幕上,系统从社交网络中提取内容列表并显示它们。
  3. 简单吧?我的问题是,我并不需要在服务器端“拉出”内容,而是在用户浏览时根据客户端的需求。执行此操作的标准方法是客户端(浏览器)调用我的服务器,然后将内容从使用api中提取并将其提供给客户端。这样,oauth令牌和凭证永远不会发送到客户端。

    我首选的方法是让客户端直接调用apis(JSONP)并提取内容。但是,我必须将令牌和凭据传递回它们所在的浏览器。它们不存储在任何类型的客户端存储(html,本地存储,会话等)中,但是使用此机制,如果不可疑的用户在完成后未注销,则该漏洞存在于共享计算机和设备中,或智能用户查看浏览器历史记录并查找仍处于活动状态的访问令牌(+其他方式)。

    另一种方法是使用客户端SDK,但问题是

    1. 并非我想要整合的所有服务都有javascript SDK

    2. UI /外观不一致(可以管理)

    3. 可能会增加重新授权的频率(因为短期代币)

    4. 我将消费选择性内容,因此范围将受到限制,但我最大的担忧是我将寻求发布许可,如果凭据被盗,可用于发布/删除未经授权的内容。

      是否有任何最佳实践,机制来保护(长期/离线)oauth凭据,同时仍然使用它们直接从浏览器进行api调用?

0 个答案:

没有答案