【发布时间】: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