2011-10-26 36 views
1

它是随机值吗?或者,用户可以从这个值中提取一些数据吗?如何生成GAE数据存储区密钥?

+0

为什么我不会问或不会回答这个问题的两个原因:对于应用程序设计来说是不明智的,对于GAE安全来说是不明智的。 – topchef

+0

@topchef,我可以同意第二部分,但不会同意第一部分;) - 我应该明白,如果我可以将它用作url的一部分 - 无论用户是否可以从中提取更多内容。 –

+0

@LA - 那么我们只讨论2d部分。不经意间,我刚刚与我前一天维护的软件的客户进行了交谈,他们问我们为什么不在我们的UI模型(MVC中)中公开内部密钥,而我们在网址中大量使用它。除了为什么我们不这样做,我无法想到任何有效的理由:他们对客户没有任何意义,我们提供携带商业语义和身份的独特ID。而且由于我无法给予黑客任何额外的机会,所以我拒绝仅仅因为我可以暴露这些密钥。 – topchef

回答

3

数据存储区密钥由种类,字符串名称或整数ID以及可选的父实体路径(docs)组成。所有这些都是用户指定的除了ID,所以我想这就是你问的。

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

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

(至于安全问题,没有App Engine的安全取决于保持这种ID分配机制的秘密,你可能想为什么通过隐藏的安全性通常被认为是一件坏事阅读起来。 。:P)