0

KeyFactory.keyToString 文字列表現は、すでに暗号化されているように見えます

例:

...
    Key  key  = KeyFactory.stringToKey("ag1zYW50b21lcmNhZG9zcgoLEgRUcmVlGAEM");

        try {
           Entity entity = datastoreService.get(key);
        } catch (EntityNotFoundException e) {
           map.addAttribute("EntityNotFoundException",       e.getMessage());
           map.addAttribute("status",                        false);
        }
...

private ModelMap organizeData(Entity entity){

   Map     properties   =              entity.getProperties();
   Key     key          =              entity.getKey();
   String  key_string   =              KeyFactory.keyToString(key);

   ModelMap data = new ModelMap();

   data.addAttribute("properties",     properties);
   data.addAttribute("keyString",      key_string);

   return data;
}


public ArrayList<ModelMap> getTree() {
   ArrayList<ModelMap> treeLists = new ArrayList<ModelMap>();

   Query query = new Query("Tree");

   query.addSort("left", Query.SortDirection.ASCENDING);

   for(Entity entity:datastoreService.prepare(query).asIterable()){

      // Todo -> Organize Data as ModelMap Obj
      ModelMap model = organizeData(entity);

      treeLists.add(model);

   }

   return treeLists;
}

私は尋ねるので

https://developers.google.com/appengine/docs/java/datastore/entities

キーの文字列表現は「Web セーフ」です。HTML や URL で特殊と見なされる文字は含まれません。

注: KeyFactory.keyToString メソッドは、デバッグおよびロギングでの使用に適した人間が読み取れる文字列を返す Key.toString とは異なります。使用可能なキーに変換できる文字列値が必要な場合は、KeyFactory.keyToString を使用します。

キーの文字列表現は暗号化されていないことにも注意してください。ユーザーはキー文字列をデコードして、エンティティとその祖先の種類と識別子を含むコンポーネントを抽出できます。この情報をユーザーから隠すことが重要な場合は、キー文字列をユーザーに送信する前に自分で暗号化する必要があります。

彼らは Key.toString を参照していますか?

このJSONをクライアントレイアウトに送信するため

[
   {
      "properties":{
         "parent":null,
         "left":1,
         "right":2,
         "name":"laptops"
      },
      "keyString":"ag1zYW50b21lcmNhZG9zcgoLEgRUcmVlGAEM"
   },
   {
      "properties":{
         "parent":null,
         "left":3,
         "right":4,
         "name":"Pc"
      },
      "keyString":"ag1zYW50b21lcmNhZG9zcgoLEgRUcmVlGAIM"
   }
...

keyString を使用しても安全ですか?

4

1 に答える 1

1

KeyFactory.keyToString暗号化されておらず、Base64 または同様のベースでエンコードされているだけです。彼らの懸念は、キーをユーザーに送信すると、データストレージからデータを取得するリクエストの作成に使用できるため、問題が発生する可能性があることです。

于 2013-07-29T16:48:34.953 に答える