Permessi dei token

Ogni token porta con sé un elenco di scope. Ogni route controlla il suo scope e la capability di WordPress che le serve prima di agire, quindi un token non può mai fare più dell’account che l’ha creato. Dai a ogni token solo ciò che serve al suo lavoro.

Plugin 1.7.024 scope

In questa pagina

Come funzionano gli scope

  • Due controlli, su ogni route. Una richiesta ha bisogno dello scope della route e della capability WordPress che la route richiede, come edit_posts, upload_files, install_plugins o manage_options. Un token creato da un Editor non può installare plugin, qualunque scope abbia.
  • Lettura e scrittura sono separate. Con content:read non cambia mai nulla. Per scrivere serve il relativo scope …:write.
  • La pubblicazione ha il suo scope. Senza content:publish, un articolo o una pagina creati o aggiornati con stato “publish” vengono salvati come bozza.
  • Gli scope pericolosi (segnati qui sotto) non sono mai nel gruppo di default, e la schermata Token avvisa per ognuno quando lo selezioni. Le operazioni più distruttive chiedono anche un passaggio di conferma.
  • Alcuni scope equivalgono a un amministratore. fs:admin, db:write, cli:exec, system:backup, plugin:write, theme:write e admin:login permettono a chi ha il token di fare ciò che può fare un amministratore. Tratta un token che ne ha uno come la password di un amministratore.

Tutti gli scope

Gli scope segnati default sono il punto di partenza suggerito dal plugin per un token dei contenuti. Nessuno scope pericoloso ne fa parte.

ScopePermetteNote
auth:readSapere a chi appartiene il token (/whoami).default
audit:readLeggere il registro delle chiamate e la coda di debug.log.default · solo admin
dashboard:readLeggere le statistiche della dashboard.default
content:readLeggere articoli, pagine, termini, ricerca e dati multilingua.default
content:writeCreare, modificare ed eliminare articoli e pagine (come bozze), creare termini, impostare traduzioni.default
content:publishPubblicare direttamente articoli e pagine.pericoloso
media:readLeggere la libreria media ed elencare i media inutilizzati.default
media:writeCaricare da URL o in base64, modificare i metadati, ottimizzare ed eliminare media, impostare traduzioni dei media.default
seo:readLeggere i meta SEO, analizzare articoli, audit, stato della sitemap e link rotti.default
seo:writeCambiare titoli, descrizioni e altri meta SEO; applicare le correzioni sicure di un audit SEO.default
analytics:readLeggere i dati di traffico dal plugin di statistiche del sito.default
theme:readLeggere il tema attivo e i suoi file.
theme:writeScrivere file del tema, aggiungere CSS personalizzato, cambiare tema.pericoloso · equivale a un amministratore
plugin:readElencare i plugin (con gli aggiornamenti disponibili) e leggerne i file.
plugin:writeScrivere file dei plugin.pericoloso · equivale a un amministratore
plugin:installInstallare dalla directory di WordPress.org, da un URL o da uno zip caricato; attivare, disattivare, creare lo scheletro di un nuovo plugin.pericoloso
site:readLeggere impostazioni, menu, widget, Customizer, prestazioni e stato della manutenzione; elencare, leggere, cercare e scaricare file.solo admin per i file
site:writeCambiare impostazioni, menu, widget e Customizer, attivare la manutenzione, svuotare debug.log, e cambiare file solo dentro la cartella uploads.pericoloso · solo admin per file e manutenzione
fs:adminCon site:write: cambiare qualsiasi file sotto la cartella del sito, codice compreso, tranne i file protetti.pericoloso · solo admin · equivale a un amministratore
db:readEseguire query SELECT attraverso la protezione SQL.solo admin
db:writeEseguire INSERT, UPDATE e DELETE, ognuna con conferma.pericoloso · solo admin · equivale a un amministratore
cli:execEseguire i comandi WP-CLI ammessi. Spento su ogni sito finché il gestore non lo attiva.pericoloso · solo admin · equivale a un amministratore
system:backupCreare, elencare e ripristinare backup completi.pericoloso · solo admin · equivale a un amministratore
admin:loginOttenere un link monouso, valido 60 secondi, che fa entrare in wp-admin l’utente del token.pericoloso · solo admin · equivale a un amministratore

I due livelli sui file

Dal plugin 1.7.0, per cambiare i file servono due livelli diversi:

site:write

Cambia file solo dentro wp-content/uploads, e solo di tipo inerte: documenti, immagini, audio, video e archivi come pdf, png, mp4, zip o docx. Il resto viene rifiutato con xaflo_fs_outside_uploads.

site:write + fs:admin

Cambia qualsiasi file sotto la cartella del sito, codice compreso, tranne i file protetti (wp-config.php, .env, backup, la cartella del bridge). Ogni sovrascrittura, rinomina, eliminazione e ogni scrittura di file eseguibili o di configurazione del server chiede prima conferma.

Per leggere i file servono site:read e un account amministratore. I segreti come wp-config.php, i file .env, i backup, i dump SQL e debug.log vengono rifiutati e nascosti dagli elenchi a ogni livello.

Combinazioni che funzionano

Report, sola lettura

Audit, analytics, revisioni SEO. Non può cambiare nulla.

auth:readcontent:readseo:readanalytics:readsite:read

Redazione

Bozze, correzioni SEO e immagini. Niente va online senza di te.

content:readcontent:writemedia:readmedia:writeseo:readseo:write

Pubblicazione

La redazione, più il diritto di pubblicare.

content:writecontent:publishmedia:writeseo:write

Xaflo Desktop, controllo completo

Remoto → File oltre uploads, Deploy e “Apri wp-admin” già collegato. Equivale a un amministratore: tienilo solo sul tuo computer.

plugin:readplugin:installsite:readsite:writefs:adminadmin:login

Tieni fs:admin, db:write, cli:exec e admin:login fuori dai token di tutti i giorni. Se te ne serve uno, crea un token di breve durata per quel lavoro e revocalo appena hai finito.

Limiti per scope

Ogni token può fare 60 richieste al minuto di default; gli amministratori collegati a wp-admin hanno lo stesso limite. Gli scope delicati hanno limiti propri, più stretti, per token:

ScopeRichieste al minuto
cli:exec5
system:backup5
db:write10
plugin:install10
theme:write20
plugin:write20
media:write30
content:publish30

Oltre il limite l’API risponde 429 con l’header Retry-After. Chi gestisce il sito può cambiare il limite globale e quelli per scope nelle impostazioni del plugin.

Durata e revoca

  • Un token scade dopo i giorni che hai scelto (da 1 a 365, 30 di default). Un processo giornaliero elimina i token scaduti.
  • Puoi revocare un token in qualsiasi momento da Xaflo → Token. Smette di funzionare alla chiamata successiva.
  • Un token funziona solo sul sito che l’ha emesso: il suo emittente deve coincidere con l’indirizzo del sito. Una copia di staging con un altro indirizzo ha bisogno di token suoi.
  • Ruota chiave in Xaflo → Impostazioni invalida tutti i token in un colpo solo. Dopo l’aggiornamento alla 1.7.0 è obbligatorio: vedi Aggiornare alla 1.7.0.