代码之家  ›  专栏  ›  技术社区  ›  Utkarsh Saxena

为什么在google endpoints框架中使用websafe字符串访问数据?

  •  0
  • Utkarsh Saxena  · 技术社区  · 7 年前

    我在google endpoints framework(Java)上完成了udacity课程ud859。为了访问云数据存储中的数据,我使用了Objectify。实体类的定义方式如下

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

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

    因此,要访问概要文件数据,可以形成一个端点“/概要文件/{id}”

    此外,此id还可用于使用 Key.create(Profile.class,id); 此方法返回类型为的实例 Key<Profile> . 其方法之一 key.getString() 返回表示该概要文件对象的websafestring。

    所教的惯例是使用websafestring通过web访问和共享对象的数据。

    我想了解websafestring在web上是如何安全的,以及使用通常使用的URL类型“/profile/{id}”的缺点是什么

    2 回复  |  直到 7 年前
        1
  •  1
  •   Josh J    7 年前

    websafe字符串对 Key 这是查找实体所必需的。一个简单的用例可以将ID定义为 Key(MyKind, 1234L) . 现在,如果您的实体具有 MyParentKind 定义,那么它的全键可能更像 Key(MyKind, 1234L, MyParentKind, 5678L) . 祖先案例中的查找需要实体的ID以及所有祖先的种类+ID对。websafe密钥将所有这些信息编码为一个字符串。

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

        2
  •  0
  •   saiyr    7 年前

    我想这里考虑的是安全性,但实际上没有太大区别,因为本例中的websafe密钥字符串是base64编码的,但没有混淆,因此很容易获得数字id。如果您想向用户隐藏数据库id,还需要加密密钥。