Configurare lo schema
Configurare lo schemaInterrogazione dei campi dati 'sensibili'

Interrogazione dei campi dati 'sensibili'

Lo schema GraphQL deve trovare un equilibrio tra campi pubblici e privati, al fine di evitare di esporre informazioni private in un'API pubblica.

Per impostazione predefinita, tutti i campi dello schema GraphQL possono accedere solo a dati pubblici. Ad esempio, posts può recuperare solo articoli con stato "publish".

Inoltre, possiamo aggiungere campi dati "sensibili" e input field allo schema, destinati ad essere utilizzati solo dall'amministratore, abilitati per un custom endpoint o una persisted query specifica, che possono anche recuperare dati privati.

Ad esempio, l'argomento del campo posts(filter:) conterrà un input field aggiuntivo status, che ci permette di recuperare articoli non pubblicati (es.: articoli con stato "pending", "draft" o "trash") per qualsiasi utente. Allo stesso modo, lo schema esporrà il campo Post.status, per visualizzare questo dato.

Elenco degli elementi dati "sensibili"

Gli elementi seguenti (tra gli altri) sono, per impostazione predefinita, trattati come dati privati:

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

Sovrascrivere la configurazione predefinita

Gli elementi elencati sopra possono essere resi pubblici.

Nella pagina delle Impostazioni, nella scheda corrispondente per ciascuno, è presente una casella di controllo per configurare se trattarli come "sensibili" o "normali":

Impostazioni per trattare l'email dell'utente come dati 'sensibili'
Impostazioni per trattare l'email dell'utente come dati 'sensibili'

Ispezionare gli elementi dati "sensibili" tramite l'introspezione dello schema

La proprietà isSensitiveDataElement viene aggiunta al campo extensions durante l'introspezione dello schema. Per scoprire quali sono gli elementi dati "sensibili" dello schema, eseguire questa query:

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

Quindi cercare le voci con "isSensitiveDataElement": true nei risultati.

Aggiungere elementi dati "sensibili" agli endpoint

L'aggiunta di elementi dati "sensibili" allo schema può essere configurata come segue, in ordine di priorità:

Modalità specifica per il custom endpoint o la persisted query, definita nella configurazione dello schema

Aggiunta di elementi dati sensibili allo schema, configurata nella Schema configuration

Modalità predefinita, definita nelle Impostazioni

Se la configurazione dello schema ha il valore "Default", utilizzerà la modalità definita nelle Impostazioni:

Configurazione degli elementi dati sensibili per la schema configuration, nelle Impostazioni
Configurazione degli elementi dati sensibili per la schema configuration, nelle Impostazioni

Quando utilizzarlo

Utilizzarlo ogni volta che è consentito esporre informazioni private, ad esempio nella costruzione di un sito web statico, recuperando dati da un'istanza WordPress locale (ovvero non un'API pubblica).