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 を使用しても安全ですか?