Frage

Ist es Objekt-IDs von Daten zu belichten speichern, die in Google-Datenspeicher ist. Zum Beispiel in meinem Code habe ich Einheit mit dieser ID:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;

Die ID dies wird ähnlich sein: agptZeERtzaWYvSQadLEgZDdRsUYRs

Kann jemand extrahieren Passwort, Anwendungs-URL und andere Informationen aus dieser Zeichenfolge? Was ist die Bedeutung dieser Zeichenfolge?

War es hilfreich?

Lösung

Das Unternehmen ID enthält die Objekt-ID, Anwendungs-ID und Objektklassennamen. Es ist nur eine codierte Zeichenfolge. Nicht wirklich jede Art von Sicherheitsrisiko dar.

Andere Tipps

Sie haben die KeyFactory verwenden können, um keytoString zu konvertieren, stringToKey als URL Google App Engine :

die ID, dass ich glaube, dass es eine eindeutige ID für die Datenspeicherung in Google App Engine war.

  

Key-Instanzen können konvertiert werden und   aus der codierten String-Darstellung   Verwendung der Methoden KeyFactory   keyToString () und stringToKey ().

     

Wenn codierte Schlüsselfolgen verwenden, können Sie   kann Zugriff auf ein Objekt des bieten   Zeichenfolge oder numerische ID mit einem   zusätzliche Felder.

Ich hoffe, es hilft.

Tiger.

Wenn Sie navigieren zu localhost: 4321 / _ah / admin, können Sie die Vorteile des sdk Datenspeicher-Viewer, wo Sie, dass jede Art von Einheit sehen hat ein KEY-Feld und ein NAMEN / ID-Feld;

Ob Sie lange, String oder Key als @PrimaryKey verwenden, wird es ein ID / Spalt Namen mit einem String / Nummer und eine Schlüsselspalte sein, mit dem codierten Schlüssel für die ID. Wie in anderen Beiträgen erwähnt, diese Codierung Hashes {md5s, höchstwahrscheinlich} Ihre AppSpot Anwendungs-ID, die vollständig qualifizierten Klassennamen des Datenobjekts, und was auch immer Sie als @PrimaryKey angeben.

Die einzige Zeit, die Sie jemals einen direkten Zugang zu diesem Bereich wollen, ist, wenn Sie absolut egal, was die Daten genannt wird, {wenn Sie Ihr Programm brauchen, es zu finden, aber die Menschen werden nicht für sie werden die Suche durch Erraten Worte in ein Textfeld}, oder wenn Sie mehrere Objekte des gleichen Typs und Namen haben wollen {vielleicht eine Version int verwenden?}, dann sollten Sie die codierten Schlüssel Syntax. Sowohl KEY und ID ist in der db, ob Sie ein Feld in der Klasse setzen, mit der codierten Schlüssel Syntax nur gibt Sie auf diesen Wert zugreifen.

Außerdem gibt es einen verfügbaren Geschwindigkeitsbonus für Anwendungen, die codierten Schlüssel verwenden ... Es gibt nur zwei Arten von Abfragen: SELECT * und SELECT _ _ _ _ Taste {Leerzeichen verwenden dort zeigen zwei _}. Für große Datenmengen in AJAX-Anwendungen, die nur eine effiziente Möglichkeit, Daten zu Paginieren ist, alle Tasten zu wählen, so dass sie an den Client senden, und haben fragen Sie den Client für 0-> X Anzahl der Datensätze, bauen Links für die anderen X-> Y Ergebnisse und abfragen, um den Server mit dem ersten Satz von codierten Schlüsseln für die vollständigen Daten, Antwort in nette kleine Listen analysieren und Laden 397 Server Datenobjekte vermeiden, die nicht unmittelbar von Nutzen ist.

Senden von kodierten Tasten nach oben und unten den Draht könnte ein wenig mehr Bandbreite als unverschlüsselte Schlüssel nehmen {es sei denn, du bist so lange umständliche Dinge zu benennen, wie ich bin!}; aber es diese CPU-Zyklen auf appengine rasiert, macht Ihre Quoten glücklicher, und jeder App läuft nur einen Bruchteil etwas schneller!

Dieser Schlüssel, auch wenn irgendwie ungehashte, werden nur die Daten als sensibel freizulegen, wie alles, was Sie PrimaryKey machen. Sie App-Passwort nicht beteiligt ist, noch werden Benutzer-Passwörter in jedem vernünftigen Datenmodell. Über die einzige Sache, die vielleicht {BIG könnte} Leck ein Benutzer E-Mail-Adresse ist, wenn Sie die mitgelieferte Benutzerklasse für die Authentifizierung verwenden, oder den Klassennamen, die Sie in Ihrer Quelle verwenden.

... Im Grunde genommen nur Informationen bereits eine Firebug Anfrage oder zwei in der Beobachtung möglicherweise ausgesetzt sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top