【问题标题】:Security concerns with GAE user_id as a datastore keyGAE user_id 作为数据存储密钥的安全问题
【发布时间】:2017-09-24 03:36:01
【问题描述】:

众所周知,在 Google Cloud Datastore 类型中强制执行唯一属性的唯一可靠方法是通过密钥属性。因此,假设我们正在使用 Google 用户 API 构建一个 Google AppEngine (GAE) 应用程序来验证用户身份,并且我们想要创建一种称为 Profile 的类型。每个用户只能有一个配置文件。将 User 对象 id 存储为键属性以强制执行此唯一性是有意义的,对吧?事实上,Google App Engine User API documentation 甚至是这样说的:

在数据存储中使用用户值

用户ID稳定;您可以在键名或字符串属性中使用它。因此,在使用用户值时,您希望存储用户 ID

但假设我们的应用需要在浏览器中显示指向这些用户配置文件的超链接。用user.user_id() 字符串构成网址是否合适?用户ID不应该被视为敏感信息吗?一个人的 Google 帐户 user_id 在所有 Google 应用程序中都是相同的。泄露给浏览器似乎不对,但我在 GAE 文档中找不到任何禁止内容(除非我遗漏了什么)。

现在如果用户ID不应该泄露给客户端,它应该被散列吗?或者有没有其他方法来设计一种 Google 用户 ID 应该是唯一的?

注意:例如,我可以使用用户 ID 作为密钥并将其与经过身份验证的端点中的 当前用户 进行比较。问题在于它是否可以暴露给浏览器(感觉不对),如果不能,通常如何处理资源(例如博客文章)的所有者(应用程序用户)需要的情况在应用程序中可见。

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore google-account


    【解决方案1】:

    Google 安全似乎可以通过浏览器公开它。

    Google+ 在显示用户个人资料时在 URL 中使用它,并将其作为帖子 URL 的一部分。

    【讨论】:

    • 有趣的是,当我将 get_current_user().user_id() 获得的 id 存储在 AppEngine 中并在 Google Cloud Console 中检查数据存储时,我看到的 id 与 plus.google.com 之后的不同在我的个人资料网址中。
    • @RayToal GAE 用户 API 不一定使用与 Google+ 或其他 Google 身份验证系统相同的 ID。
    猜你喜欢
    • 2019-08-15
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2015-11-24
    相关资源
    最近更新 更多