【问题标题】:How GAE datastore key is generated?GAE 数据存储密钥是如何生成的?
【发布时间】:2011-12-15 16:02:19
【问题描述】:

它是随机值吗?或者,用户可以从这个值中提取一些数据吗?

【问题讨论】:

  • 我不问或不回答问题的 2 个原因:应用程序设计不明智,GAE 安全性不明智。
  • @topchef,我可以同意第二部分,但不同意第一部分;)-我应该了解是否可以将其用作 url 的一部分-用户是否可以从中提取更多内容或不是。
  • @LA - 然后我们一起讨论 2d 部分。偶然地,前几天我刚刚与我维护的软件的一个客户进行了交谈,他问为什么我们不在我们的 UI 模型(在 MVC 中)中公开内部密钥,而我们在 URL 中大量使用它。除了我们不这样做之外,我想不出任何正当理由:它们对客户没有意义,我们提供具有业务语义和身份的唯一 ID。而且由于我无法给黑客任何额外的机会,我拒绝仅仅因为我可以暴露这些密钥。

标签: google-cloud-datastore


【解决方案1】:

数据存储键由种类、字符串名称或整数 id 和可选的父实体路径 (docs) 组成。除 id 外,所有这些都是用户指定的,所以我认为这就是您要问的。

id 是根据从 0 开始的简单整数计数器分配的。目前,在给定的应用程序中,所有根实体共享一个计数器,而非根实体在其实体组内共享一个计数器。从长远来看,来自给定计数器的 id 会增加,但数据存储服务器会批量保留 id,因此您会经常看到 id 在短期内增加和减少。

更多详情:http://groups.google.com/group/google-appengine/browse_thread/thread/dec83c2dbd9542e4#f495648c988d758c

(至于安全问题,应用引擎的安全性不依赖于保持这个 id 分配机制的秘密。您可能想了解为什么通过默默无闻的安全性通常被认为是一件坏事。:P)

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多