我在谷歌端点框架(Java)上做了udacity课程ud859。为了访问云数据存储区中的数据,我使用了Objectify。实体类按以下方式定义
@Entity
public class Profile{
@Id
Long id;
}
这个" id" attribute用于唯一标识每个配置文件,并使用ObjectifyFactory实例以随机方式分配。
因此,要访问个人资料数据,可以形成一个端点" / profile / {id}"
此id也可用于使用Key.create(Profile.class,id);
创建密钥。此方法返回类型为Key<Profile>
的实例。其方法key.getString()
之一返回表示该配置文件对象的websafestring。
所教授的惯例是使用websafestring访问和共享Web上的Object数据。
我想了解websafestring对web的安全性如何以及使用常用URL类型的缺点是什么&#34; / profile / {id}&#34;
答案 0 :(得分:1)
websafe字符串对Key
的整个祖先进行编码,这是查找实体所必需的。一个简单的用例可以将ID定义为Key(MyKind, 1234L)
。现在,如果您的实体定义了父MyParentKind
,那么它的完整密钥可能更像Key(MyKind, 1234L, MyParentKind, 5678L)
。在祖先案例中查找既需要实体的ID,也需要所有祖先的种类+ id对。 websafe密钥将所有这些信息编码为单个字符串。
答案 1 :(得分:0)
我想在这里考虑安全性,但实际上并没有多大区别,因为在这种情况下,websafe密钥字符串是base64编码但没有混淆,因此很容易获得数字ID。如果要隐藏用户的数据库ID,则还需要加密密钥。