Het schema configureren
Het schema configurerenOpvragen van 'gevoelige' datavelden

Opvragen van 'gevoelige' datavelden

Het GraphQL-schema moet een balans vinden tussen publieke en private velden, om te voorkomen dat privé-informatie wordt blootgesteld in een publieke API.

Standaard kunnen alle velden in het GraphQL-schema alleen toegang krijgen tot publieke gegevens. Zo kan posts bijvoorbeeld alleen posts ophalen met de status "publish".

Daarnaast kunnen we 'gevoelige' datavelden en invoervelden aan het schema toevoegen, bedoeld voor gebruik door de beheerder, ingeschakeld voor een specifiek custom endpoint of persisted query, die ook privégegevens kunnen ophalen.

Zo zal het veldargument posts(filter:) een extra invoerveld status bevatten, waarmee we niet-gepubliceerde posts kunnen ophalen (bijv. posts met de status "pending", "draft" of "trash") voor elke gebruiker. Evenzo stelt het schema het veld Post.status beschikbaar om dit gegeven te visualiseren.

Lijst van 'gevoelige' data-elementen

De onderstaande elementen (onder andere) worden standaard behandeld als privégegevens:

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

De standaardconfiguratie overschrijven

De hierboven genoemde elementen kunnen openbaar worden gemaakt.

Op de pagina Instellingen, op het bijbehorende tabblad voor elk element, is er een selectievakje om te configureren of ze behandeld moeten worden als 'gevoelig' of 'normaal':

Instellingen om het e-mailadres van de gebruiker als 'gevoelige' gegevens te behandelen
Instellingen om het e-mailadres van de gebruiker als 'gevoelige' gegevens te behandelen

'Gevoelige' data-elementen inspecteren via schema-introspectie

De eigenschap isSensitiveDataElement wordt toegevoegd aan het veld extensions bij schema-introspectie. Voer deze query uit om te ontdekken welke 'gevoelige' data-elementen het schema bevat:

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

Zoek vervolgens in de resultaten naar vermeldingen met "isSensitiveDataElement": true.

'Gevoelige' data-elementen toevoegen aan endpoints

Het toevoegen van 'gevoelige' data-elementen aan het schema kan als volgt worden geconfigureerd, op volgorde van prioriteit:

Specifieke modus voor het custom endpoint of de persisted query, gedefinieerd in de schemaconfiguratie

Toevoegen van 'gevoelige' data-elementen aan het schema, ingesteld in de Schema configuration

Standaardmodus, gedefinieerd in de Instellingen

Als de schemaconfiguratie de waarde "Default" heeft, wordt de modus gebruikt die in de Instellingen is gedefinieerd:

Configuratie van 'gevoelige' data-elementen voor de schemaconfiguratie in de Instellingen
Configuratie van 'gevoelige' data-elementen voor de schemaconfiguratie in de Instellingen

Wanneer gebruiken

Gebruik dit wanneer het blootstellen van privé-informatie is toegestaan, zoals bij het bouwen van een statische website waarbij gegevens worden opgehaald van een lokale WordPress-instantie (d.w.z. geen publieke API).