为什么使用网页安全字符串来访问 Google 端点框架中的数据



我在谷歌端点框架(Java(上做了udacity course ud859。为了访问云数据存储中的数据,我使用了Objectify。实体类按以下方式定义

@Entity
public class Profile{
@Id
Long id;
}

此"id"属性用于唯一标识每个配置文件,并使用ObjectifyFactory实例以随机方式分配。

因此,要访问配置文件数据,可以形成一个端点"/profile/{id}">

此外,此 id 还可用于使用 Key.create(Profile.class,id); 此方法返回类型 Key<Profile> 的实例。它的方法之一key.getString()返回表示该配置文件对象的网页安全字符串。

所教授的约定是使用Websafestring通过Web访问和共享对象的数据。

我想了解网络安全字符串如何通过网络安全,以及使用通常使用的 URL 类型"/profile/{id}"的缺点是什么

网页安全字符串对查找实体所需的Key的整个祖先进行编码。一个简单的用例可以将 ID 定义为 Key(MyKind, 1234L) 。 现在,如果您的实体定义了MyParentKind父级,那么它的 full 键可能更像是 Key(MyKind, 1234L, MyParentKind, 5678L) 。祖先案例中的查找既需要实体的 ID 也需要所有祖先的种类 + ID 对。网页安全密钥将所有此类信息编码为单个字符串。

参考: https://cloud.google.com/appengine/docs/standard/java/datastore/creating-entity-keys#Java_Ancestor_paths

我想这里考虑了安全性,但实际上没有太大区别,因为在这种情况下,Websafe 密钥字符串是 base64 编码的,但未混淆,因此很容易获得数字 id。如果要对用户隐藏数据库 ID,则还需要加密密钥。

最新更新