Enforce per-user ownership on survey media in Storage rules

Aperta
#2,578 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
firebase
Ambito
mobile, security

Direzione di ricerca

Inizia da storage/storage.rules e firestore.rules:206-215 per confrontare i controlli di autorizzazione esistenti, quindi segui putFile() in ground-android e il percorso di upload di user-media. Il lavoro è completato quando gli upload includono una submissionId, le regole di Storage possono verificare il proprietario in Firestore per le letture e le scritture e gli oggetti esistenti hanno un percorso di migrazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

type: fr web

Media authorization in storage/storage.rules is survey-scoped, while the equivalent Firestore rules are owner-scoped.

Storage rules authorize media at survey level, not owner level:

  • Reads leak: allow read: if canViewSurvey() ignores canViewDataCollectedByOthers, and read includes list — any collector can list and download everyone's photos, even when Firestore hides their submissions.
  • Writes can't be owner-scoped: #2576 had to fall back to organizer-only for update/delete, so owners can't manage their own media.

Cause: the upload path user-media/surveys/{surveyId}/submissions/{taskId}-{uuid}.jpg carries no user or submission ID, and putFile() sets no metadata. The owner is in Firestore (submission['5']) but only reachable submission → path; rules can't query.

Fix: add {submissionId} to the upload path (ground-android) so rules can do an exact firestore.get() and mirror firestore.rules:206-215. Needs a migration for existing objects.

Lingua principale
TypeScript
Stelle
254
Fork
114
Merge medio
2g 10h
PR unite (30g)
16

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di google/ground-platform

Tutte le issue di google/ground-platform

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.