Objektsicherheit in Parse mithilfe der JavaScript-API - Bindung von Benutzern an die Objekte, die gespeichert werden

8

Beim Verwalten von Entitäten in Parse gibt es viele Objekte, die ich an den aktuell angemeldeten Benutzer binden muss.

Meine Bedenken sind:

  1. Es gibt keinen Backend-Code, der sicherstellt, dass der übergebene User der aktuell angemeldete Benutzer ist.
  2. Benutzer könnten neu erstellte Objekte anderen Benutzern zuweisen.

Sie haben diese Beispiel-TODO-App , die in Die Dokumentation zeigt keinen Cloud Code an, um sicherzustellen, dass der User , dem Todo zugewiesen ist, der aktuell angemeldete Benutzer ist.

Nun, da ich den Code durchschaue, denke ich, dass jedesmal ein Objekt gespeichert wird es wird an den Benutzer gebunden. Kann jemand erklären, warum diese Anwendung funktioniert und wie sie Todo s mit User verknüpft?

UPDATE: Vergesst nicht, ich habe den Ort in ihrem Code gefunden, wo sie den Benutzer angeben, der für den Todo gespeichert werden soll. Meine Frage ist, was einen Benutzer daran hindert, Code zu schreiben, der den Todo mit der Benutzer-ID einer anderen Person speichert?

%Vor%

UPDATE # 2: Wenn das User -Objekt eine ACL gesetzt hat, damit Benutzer User Objekte, die sie besitzen, lesen können, wären sie nicht in der Lage Abfrage, um ein anderes Benutzerobjekt zu entfernen. Es gibt jedoch zwei andere mögliche Probleme:

  1. Ist es möglich, dass sie anstelle des gesamten User -Objekts die objectId des Benutzers übergeben, auch wenn das Feld user in der Tabelle Todo s eine _User ?
  2. erfordert
  3. Ich glaube, sie könnten auch ein neues Benutzerobjekt erstellen und es diesem zuweisen ... Ich versuche mir ein Szenario vorzustellen, in dem dies ein Problem wäre, aber ich kann jetzt nicht.

Wenn jemand eine der Lösungen, die hilfreich sein könnten, bestätigen oder Lösungen anbieten kann. Ich werde jetzt versuchen, # 1 zu testen.

UPDATE # 3 - Nach einigen Tests:

  1. Wenn das Feld user in der Tabelle Todo s ein Objekt _User erfordert, wird die Objekt-ID nicht als Zeichenfolge verwendet.
  2. Sie können jedoch ein neues Benutzerobjekt erstellen und die Objekt-ID dort festlegen, um dies zu umgehen.

    %Vor%

Genau hier habe ich mir Sorgen gemacht. Ich konnte ein Todo erfolgreich in einem anderen Benutzerkonto speichern - solange ich seine user_id ( objectId ) kenne. Mit genug Benutzern können sie wahrscheinlich mindestens eine Person erraten, die zufällig jemandes Konto vermasselt.

Was nun?

Antwort: Verwenden Sie den Cloud-Code, um zu überprüfen, ob der übergebene Benutzer mit dem aktuellen Benutzer übereinstimmt. Die Antwort wurde auf Parse Foren hier .

    
Matt 07.11.2012, 20:00
quelle

1 Antwort

1

Sie können Cloud-Code verwenden, um zu überprüfen, ob der übergebene Benutzer mit dem aktuellen Benutzer übereinstimmt. Diese Antwort wurde auf Parse Foren hier .

  

Sie können den Cloud-Code verwenden, um sicherzustellen, dass die objectId der entspricht   aktueller Benutzer, der diese Anfrage stellt In der Tat, unsere Beispielanwendung,   Anypic, überprüft dies die Klassen "Photo" und "Activity".

     

Aus dem Cloud-Code von Anypic:

%Vor%     
Diogenes 31.12.2012 06:15
quelle