GAE user_id 作为数据存储密钥的安全问题
Security concerns with GAE user_id as a datastore key
众所周知,在 Google 云数据存储种类中实施唯一 属性 的唯一可靠方法是通过密钥 属性。假设我们正在构建一个 Google AppEngine (GAE) 应用程序,使用 Google 用户 API 来对用户进行身份验证,并且我们想要创建一种称为 Profile 的类型。每个用户只能有一个配置文件。将用户对象 ID 存储为键 属性 以强制执行此唯一性是有意义的,对吗?事实上,Google App Engine User API documentation 甚至这样说:
Using User Values With the Datastore
The user ID is stable; you can use it in a key name or as a string property. Therefore, when using user values, you want to store the user ID
但假设我们的应用需要在浏览器中显示指向这些用户配置文件的超链接。用 user.user_id()
字符串组成 url 合适吗?用户 ID 不应该被视为敏感信息吗?一个人的 Google 帐户 user_id 在所有 Google 应用程序中都是相同的。泄漏到浏览器似乎不对,但我在 GAE 文档中找不到任何禁令(除非我遗漏了什么)。
现在if 用户id 不应该泄露给客户端,它应该被散列吗?或者是否有其他方法可以设计一种 Google 用户 ID 应该是唯一的?
注意:例如,我可以使用用户 ID 作为密钥并将其与经过身份验证的端点中的 当前用户 进行比较。这个问题与它是否可以暴露给浏览器有关(感觉不对),如果不能,通常如何处理资源(例如博客)的所有者(应用程序用户)post) 需要在应用程序中可见。
Google 通过浏览器暴露安全性似乎没问题。
Google+ 在显示用户个人资料时在 URL 中使用它,并作为他们帖子的 URL 的一部分。
众所周知,在 Google 云数据存储种类中实施唯一 属性 的唯一可靠方法是通过密钥 属性。假设我们正在构建一个 Google AppEngine (GAE) 应用程序,使用 Google 用户 API 来对用户进行身份验证,并且我们想要创建一种称为 Profile 的类型。每个用户只能有一个配置文件。将用户对象 ID 存储为键 属性 以强制执行此唯一性是有意义的,对吗?事实上,Google App Engine User API documentation 甚至这样说:
Using User Values With the Datastore
The user ID is stable; you can use it in a key name or as a string property. Therefore, when using user values, you want to store the user ID
但假设我们的应用需要在浏览器中显示指向这些用户配置文件的超链接。用 user.user_id()
字符串组成 url 合适吗?用户 ID 不应该被视为敏感信息吗?一个人的 Google 帐户 user_id 在所有 Google 应用程序中都是相同的。泄漏到浏览器似乎不对,但我在 GAE 文档中找不到任何禁令(除非我遗漏了什么)。
现在if 用户id 不应该泄露给客户端,它应该被散列吗?或者是否有其他方法可以设计一种 Google 用户 ID 应该是唯一的?
注意:例如,我可以使用用户 ID 作为密钥并将其与经过身份验证的端点中的 当前用户 进行比较。这个问题与它是否可以暴露给浏览器有关(感觉不对),如果不能,通常如何处理资源(例如博客)的所有者(应用程序用户)post) 需要在应用程序中可见。
Google 通过浏览器暴露安全性似乎没问题。
Google+ 在显示用户个人资料时在 URL 中使用它,并作为他们帖子的 URL 的一部分。