Das Schema konfigurieren
Das Schema konfigurierenAbfragen von 'sensiblen' Datenfeldern

Abfragen von 'sensiblen' Datenfeldern

Das GraphQL-Schema muss eine Balance zwischen öffentlichen und privaten Feldern finden, um zu vermeiden, dass private Informationen in einer öffentlichen API offengelegt werden.

Standardmäßig können alle Felder im GraphQL-Schema nur auf öffentliche Daten zugreifen. Zum Beispiel kann posts nur Beiträge mit dem Status "publish" abrufen.

Darüber hinaus können wir "sensible" Datenfelder und Input-Felder zum Schema hinzufügen, die nur vom Administrator genutzt werden sollen, für einen bestimmten Custom Endpoint oder eine Persisted Query aktiviert werden und auch private Daten abrufen können.

Zum Beispiel enthält das Feldargument posts(filter:) ein zusätzliches Input-Feld status, das es uns ermöglicht, nicht veröffentlichte Beiträge (z.B.: Beiträge mit dem Status "pending", "draft" oder "trash") für jeden Benutzer abzurufen. Ebenso wird das Schema das Feld Post.status bereitstellen, um diese Information anzuzeigen.

Liste der "sensiblen" Datenelemente

Die folgenden Elemente (unter anderem) werden standardmäßig als private Daten behandelt:

User:

  • email
  • roles
  • capabilities
  • metaKeys

Custom Posts:

  • status
  • wpAdminEditURL
  • hasPassword
  • password
  • rawContent
  • rawTitle
  • rawExcerpt
  • metaKeys

Comments:

  • status
  • rawContent
  • metaKeys

Taxonomies:

  • metaKeys

Custom Post Mutations:

  • Input authorBy

Menu Items:

  • rawTitle

Standardkonfiguration überschreiben

Die oben aufgeführten Elemente können öffentlich gemacht werden.

Auf der Einstellungsseite gibt es im entsprechenden Tab für jedes Element eine Checkbox, um festzulegen, ob es als "sensibel" oder "normal" behandelt werden soll:

Einstellungen, um die E-Mail-Adresse des Benutzers als 'sensible' Daten zu behandeln
Einstellungen, um die E-Mail-Adresse des Benutzers als 'sensible' Daten zu behandeln

Sensible Datenelemente per Schema-Introspektion prüfen

Die Eigenschaft isSensitiveDataElement wird dem Feld extensions bei der Schema-Introspektion hinzugefügt. Um herauszufinden, welche Elemente im Schema als "sensibel" gelten, führe diese Query aus:

query ViewSensitiveDataElements {
  __schema {
    types {
      name
      fields {
        name
        extensions {
          isSensitiveDataElement
        }
        args {
          name
          extensions {
            isSensitiveDataElement
          }
        }
      }
      inputFields {
        name
        extensions {
          isSensitiveDataElement
        }
      }
      enumValues {
        name
        extensions {
          isSensitiveDataElement
        }
      }
    }
  }
}

Suche anschließend in den Ergebnissen nach Einträgen mit "isSensitiveDataElement": true.

Sensible Datenelemente zu Endpoints hinzufügen

Das Hinzufügen von "sensiblen" Datenelementen zum Schema kann wie folgt konfiguriert werden, in der Reihenfolge der Priorität:

Spezifischer Modus für den Custom Endpoint oder die Persisted Query, definiert in der Schema-Konfiguration

Hinzufügen von sensiblen Datenelementen zum Schema, konfiguriert in der Schema configuration

Standardmodus, definiert in den Einstellungen

Wenn die Schema-Konfiguration den Wert "Default" hat, wird der in den Einstellungen definierte Modus verwendet:

Konfiguration der sensiblen Datenelemente für die Schema configuration in den Einstellungen
Konfiguration der sensiblen Datenelemente für die Schema configuration in den Einstellungen

Wann verwenden

Verwende dies immer dann, wenn das Offenlegen privater Informationen erlaubt ist, z.B. beim Erstellen einer statischen Website, bei der Daten von einer lokalen WordPress-Instanz abgerufen werden (d.h. keine öffentliche API).