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.
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_pluginsomanage_options. Un token creato da un Editor non può installare plugin, qualunque scope abbia. - Lettura e scrittura sono separate. Con
content:readnon 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:writeeadmin:loginpermettono 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.
| Scope | Permette | Note |
|---|---|---|
auth:read | Sapere a chi appartiene il token (/whoami). | default |
audit:read | Leggere il registro delle chiamate e la coda di debug.log. | default · solo admin |
dashboard:read | Leggere le statistiche della dashboard. | default |
content:read | Leggere articoli, pagine, termini, ricerca e dati multilingua. | default |
content:write | Creare, modificare ed eliminare articoli e pagine (come bozze), creare termini, impostare traduzioni. | default |
content:publish | Pubblicare direttamente articoli e pagine. | pericoloso |
media:read | Leggere la libreria media ed elencare i media inutilizzati. | default |
media:write | Caricare da URL o in base64, modificare i metadati, ottimizzare ed eliminare media, impostare traduzioni dei media. | default |
seo:read | Leggere i meta SEO, analizzare articoli, audit, stato della sitemap e link rotti. | default |
seo:write | Cambiare titoli, descrizioni e altri meta SEO; applicare le correzioni sicure di un audit SEO. | default |
analytics:read | Leggere i dati di traffico dal plugin di statistiche del sito. | default |
theme:read | Leggere il tema attivo e i suoi file. | |
theme:write | Scrivere file del tema, aggiungere CSS personalizzato, cambiare tema. | pericoloso · equivale a un amministratore |
plugin:read | Elencare i plugin (con gli aggiornamenti disponibili) e leggerne i file. | |
plugin:write | Scrivere file dei plugin. | pericoloso · equivale a un amministratore |
plugin:install | Installare dalla directory di WordPress.org, da un URL o da uno zip caricato; attivare, disattivare, creare lo scheletro di un nuovo plugin. | pericoloso |
site:read | Leggere impostazioni, menu, widget, Customizer, prestazioni e stato della manutenzione; elencare, leggere, cercare e scaricare file. | solo admin per i file |
site:write | Cambiare 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:admin | Con site:write: cambiare qualsiasi file sotto la cartella del sito, codice compreso, tranne i file protetti. | pericoloso · solo admin · equivale a un amministratore |
db:read | Eseguire query SELECT attraverso la protezione SQL. | solo admin |
db:write | Eseguire INSERT, UPDATE e DELETE, ognuna con conferma. | pericoloso · solo admin · equivale a un amministratore |
cli:exec | Eseguire i comandi WP-CLI ammessi. Spento su ogni sito finché il gestore non lo attiva. | pericoloso · solo admin · equivale a un amministratore |
system:backup | Creare, elencare e ripristinare backup completi. | pericoloso · solo admin · equivale a un amministratore |
admin:login | Ottenere 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.
Redazione
Bozze, correzioni SEO e immagini. Niente va online senza di te.
Pubblicazione
La redazione, più il diritto di pubblicare.
Xaflo Desktop, controllo completo
Remoto → File oltre uploads, Deploy e “Apri wp-admin” già collegato. Equivale a un amministratore: tienilo solo sul tuo computer.
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:
| Scope | Richieste al minuto |
|---|---|
cli:exec | 5 |
system:backup | 5 |
db:write | 10 |
plugin:install | 10 |
theme:write | 20 |
plugin:write | 20 |
media:write | 30 |
content:publish | 30 |
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.