RLS: ausgeblendete und zusammengeführte Katalogspiele sind für anon über die Tabellen lesbar (Absicht klären) #69

Open
opened 2026-11-04 19:31:34 +00:00 by cschlaefke · 1 comment
Owner

Befund aus den Such-E2E (3c, Issue #3): Die Policy games_select lässt jede Zeile mit visibility = 'catalog' zu, auch wenn hidden_at oder merged_into_id gesetzt ist. Nur die View catalog_games filtert das heraus. Folglich sind ausgeblendete und zusammengeführte Katalogspiele und deren alternative Titel (game_alt_titles) für anon direkt über die Tabellen (PostgREST /rest/v1/games) lesbar. Über die Such-RPC erscheinen sie nie.

Das folgt aus der RLS von Spec #2, nicht aus #3.

Zu klären: Ist das beabsichtigt (z. B. weil Verweise auf zusammengeführte Spiele auflösbar bleiben müssen)? Wenn nicht: Policy so verengen, dass anon/authenticated nur sichtbare Katalogspiele lesen (Auswirkungen auf Sammlung/Partien, die auf zusammengeführte Spiele zeigen, prüfen). Ausgeblendete Spiele enthalten möglicherweise unerwünschte Inhalte (z. B. nach Moderation).

Zuständig: architect (Prüfung), dann backend-dev.

Befund aus den Such-E2E (3c, Issue #3): Die Policy `games_select` lässt jede Zeile mit `visibility = 'catalog'` zu, auch wenn `hidden_at` oder `merged_into_id` gesetzt ist. Nur die View `catalog_games` filtert das heraus. Folglich sind ausgeblendete und zusammengeführte Katalogspiele und deren alternative Titel (`game_alt_titles`) für `anon` direkt über die Tabellen (PostgREST `/rest/v1/games`) lesbar. Über die Such-RPC erscheinen sie nie. Das folgt aus der RLS von Spec #2, nicht aus #3. **Zu klären:** Ist das beabsichtigt (z. B. weil Verweise auf zusammengeführte Spiele auflösbar bleiben müssen)? Wenn nicht: Policy so verengen, dass `anon`/`authenticated` nur sichtbare Katalogspiele lesen (Auswirkungen auf Sammlung/Partien, die auf zusammengeführte Spiele zeigen, prüfen). Ausgeblendete Spiele enthalten möglicherweise unerwünschte Inhalte (z. B. nach Moderation). Zuständig: architect (Prüfung), dann backend-dev.
cschlaefke added the
needs-clarification
label 2026-11-04 19:31:34 +00:00
Author
Owner

Einschätzung aus dem Review von 3c (code-reviewer): Kein neues Sicherheits- oder Datenschutzproblem im engeren Sinn. Spec #2 hat es so entschieden (E3 lässt die Lese-Policy unverändert, Spec-F2 Option A, R4 akzeptiert das Risiko). Betroffen sind öffentliche Katalogdaten, keine personenbezogenen.

Aber: R4 beschreibt die Lage zu eng („per ID lesbar“). Tatsächlich lassen sich ausgeblendete Katalogspiele und ihre alternativen Titel als anon in games bzw. game_alt_titles auflisten und per ilike durchsuchen (per Rollback-Probe bestätigt). Nur die View catalog_games und die Such-RPC filtern.

Entscheidung bei Chris: Annahme bestätigen (Spec-Nachtrag zu R4) oder Status „gesperrt“ mit RLS-Filter einführen. In 3c wird nichts geändert.

Einschätzung aus dem Review von 3c (code-reviewer): Kein neues Sicherheits- oder Datenschutzproblem im engeren Sinn. Spec #2 hat es so entschieden (E3 lässt die Lese-Policy unverändert, Spec-F2 Option A, R4 akzeptiert das Risiko). Betroffen sind öffentliche Katalogdaten, keine personenbezogenen. Aber: **R4 beschreibt die Lage zu eng** („per ID lesbar“). Tatsächlich lassen sich ausgeblendete Katalogspiele und ihre alternativen Titel als `anon` in `games` bzw. `game_alt_titles` **auflisten und per `ilike` durchsuchen** (per Rollback-Probe bestätigt). Nur die View `catalog_games` und die Such-RPC filtern. Entscheidung bei Chris: Annahme bestätigen (Spec-Nachtrag zu R4) oder Status „gesperrt“ mit RLS-Filter einführen. In 3c wird nichts geändert.
Sign in to join this conversation.
No description provided.