【问题标题】:Can I associate a user's account with an action to the drive API?我可以将用户帐户与驱动器 API 的操作相关联吗?
【发布时间】:2015-08-16 21:10:14
【问题描述】:

我们正在寻求制作一个小型 Web 应用来管理我们为期一周的 nerf 战争(准确地说是人类与僵尸),并且我们正在考虑让 Google 表格成为我们唯一的后端有多容易,并且我们的前端完全是 javascript/html/css。

假设在这个 javascript 中可以完成两个操作:

  1. 注册,将一行添加到某个工作表。
  2. 报告标签,将一行添加到另一个工作表。

假设我们有 100 名玩家。我们将让每个玩家使用谷歌帐户登录。有没有一种方法,对于上述任何一个动作,我们都可以让工作表知道谁做了那个动作?

这样,如果有人掌握了 API 密钥并欺骗他们的推荐人提出错误的请求,那么我们就可以知道是哪个 google 帐户做的,并禁止他们进入游戏。

例如,如果我打开工作表并说“查看修订历史记录”,我不想看到所有修订的一个用户,我想看到触发该操作的用户。

这是一种合理的方法吗?有可能吗?谢谢!

(注意:我知道这两个操作可以通过 google 表单完成,它可以关联用户的帐户,但想象一下我们有更复杂的操作,仅使用 google 表单无法实现)

【问题讨论】:

    标签: javascript oauth google-drive-api google-sheets google-oauth


    【解决方案1】:

    简短的回答是否定的。您将使用电子表格 API(而不是 Drive API)来更新工作表。就 Google 而言,“用户”是您的应用程序,无论当时是哪个人在驱动应用程序。您的应用程序知道人类是谁,因此它负责记录您的用例可能需要的任何审计信息。

    【讨论】:

    • 谢谢!这有助于一堆。如果您不介意,一个快速的后续问题:是什么阻止了老练的用户只查看传出请求、从源代码中获取我的 api 密钥和 doc url 并对我的工作表造成严重破坏?
    • 任何访问工作表的尝试都必须包含一个有效的、当前的访问令牌。只有当以下两个都为真时才能生成访问令牌,1/请求来自您的应用程序(由客户端验证ID 和来源),并且 2/ 有人登录到 Google 会话。
    • 似乎很容易解决这个问题。用户不能:1. 使用他们的谷歌帐户登录我的页面,2. 执行导致发送请求的操作,3. 在网络选项卡中查看客户端 ID,4. 使用 curl 相同客户端 ID,设置标题以使来源看起来像我的应用程序,发送他们想要的任何工作表 API 请求?也许下载整个表格,也许删除所有内容,也许增加他或她自己在游戏中的分数……可能吗?
    • 我没有检查所有的攻击向量,但原则上,我同意来自客户端的任何东西都不可信,因此欺诈性的 http 数据包总是有可能的。如果在这种情况下存在损坏风险,您可能需要转移到服务器应用程序,或者至少是一个阻止任何漏洞的服务器代理,例如通过审查用户 ID 或阻止某些操作。 OAuth 使用范围来限制应用程序可以执行的操作,但这依赖于服务提供商(在本例中为 Google)来实现您可以选择的一系列细粒度范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多