Incolli un link di YouTube in un articolo WordPress e, come per magia, si trasforma in un player video incorporato. Nessun iframe da copiare, nessun HTML da modificare — solo un URL che diventa media ricco. Quella magia si chiama oEmbed, un protocollo aperto integrato in WordPress dalla versione 2.9 (2009). È comoda, praticamente invisibile e — a seconda della tua prospettiva — o una funzionalità utile o un problema di privacy e sicurezza di cui dovresti essere consapevole.
Come funziona il protocollo sotto il cofano
Quando incolli un URL nell'editor a blocchi di WordPress, WordPress non lo avvolge semplicemente in un iframe e spera per il meglio. Il processo ha tre fasi distinte:
- Lookup del provider — WordPress confronta l'URL con un elenco fisso di provider oEmbed affidabili (YouTube, Vimeo, Twitter, Spotify, ecc.). Se l'URL corrisponde a un provider noto, WordPress sa dove richiedere il codice di embed.
- Richiesta API — WordPress invia una richiesta HTTP all'endpoint oEmbed del provider, contenente l'URL e le dimensioni di embed desiderate. Per un video di YouTube, ad esempio, contatta qualcosa come
https://www.youtube.com/oembed?url=...&format=json. - Rendering dell'embed — Il provider risponde con JSON contenente l'HTML dell'embed (di solito un iframe), un titolo, un URL della thumbnail e metadati come il nome dell'autore. WordPress memorizza nella cache questa risposta e renderizza l'embed nel tuo post.
Se l'URL non corrisponde a un provider noto, WordPress può anche tentare l'oEmbed discovery — recupera l'URL di destinazione e cerca un tag <link type="application/json+oembed"> nell'HTML che punti a un endpoint oEmbed. Questo permette a servizi meno noti di fornire comunque embed senza essere nella whitelist di WordPress.
Quali servizi sono supportati?
WordPress viene fornito con supporto integrato per una lunga lista di provider. Quelli più utilizzati includono:
- Video: YouTube, Vimeo, Dailymotion, VideoPress, TikTok
- Audio: Spotify, SoundCloud, Mixcloud
- Social: Twitter/X, Instagram, Reddit, Tumblr, Bluesky
- Immagini: Flickr, Imgur, SmugMug
- Altri: articoli WordPress.com, Speaker Deck, Crowdsignal, Pocket Casts
I plugin possono aggiungere ulteriori provider, e WordPress consente anche di registrare provider oEmbed personalizzati tramite la funzione wp_oembed_add_provider().
WordPress come provider oEmbed
Ecco la parte che molti tralasciano: WordPress non solo consuma oEmbed — funziona anche come provider. Per impostazione predefinita, ogni sito WordPress espone un endpoint oEmbed su /wp-json/oembed/1.0/embed e aggiunge un link di discovery a ogni pagina:
<link rel="alternate" type="application/json+oembed"
href="https://example.com/wp-json/oembed/1.0/embed?url=..." />Questo significa che altri siti WordPress (o qualsiasi applicazione consapevole di oEmbed) possono incorporare i tuoi articoli semplicemente incollando l'URL. L'anteprima incorporata include il titolo dell'articolo, un riassunto, il nome del sito e l'autore — il che ci porta al lato della sicurezza e della privacy.
Implicazioni di sicurezza e privacy
La funzionalità di provider oEmbed presenta diversi aspetti che vale la pena considerare:
- Esposizione delle informazioni — L'endpoint oEmbed restituisce titoli degli articoli, riassunti, nomi visualizzati degli autori e metadati del sito a chiunque lo interroghi. Non devi essere autenticato. Questo può essere un problema se pubblichi contenuti dove l'identità dell'autore non dovrebbe essere pubblica, o se vuoi minimizzare le informazioni che il tuo sito espone.
- Potenziale SSRF — Quando WordPress recupera i dati oEmbed per URL incollati nell'editor, effettua richieste HTTP in uscita. In teoria, un URL appositamente preparato potrebbe tentare di sfruttarlo per Server-Side Request Forgery, dove WordPress richiede risorse interne. WordPress ha protezioni contro questo, ma la superficie di attacco esiste.
- Caricamento di risorse di terze parti — Ogni servizio incorporato carica i propri script, fogli di stile e meccanismi di tracciamento da server esterni. Un embed di YouTube carica gli script di tracciamento di Google. Un embed di Twitter carica gli script di X. Ciascuno di questi crea richieste di terze parti rilevanti per la conformità GDPR e può influire sulle prestazioni della pagina.
- Superficie REST API — L'endpoint oEmbed fa parte della REST API di WordPress. Se stai cercando di minimizzare il numero di endpoint API pubblicamente accessibili sul tuo sito (una misura di sicurezza comune), l'oEmbed discovery contribuisce a quella superficie.
Disabilitare la funzionalità di provider oEmbed
Se non vuoi che altri siti incorporino i tuoi contenuti, o se vuoi ridurre l'esposizione delle informazioni del tuo sito, puoi disabilitare il lato provider senza perdere la capacità di incorporare contenuti esterni nei tuoi articoli:
// Rimuovi i link di discovery oEmbed dall'head HTML
remove_action('wp_head', 'wp_oembed_add_discovery_links');
// Rimuovi il JavaScript specifico di oEmbed dal frontend
remove_action('wp_head', 'wp_oembed_add_host_js');
// Disabilita la route REST API di oEmbed
add_filter('embed_oembed_discover', '__return_false');Se vuoi anche impedire a WordPress di recuperare dati oEmbed per gli URL che incolli (ad esempio, per evitare completamente le richieste in uscita), puoi rimuovere il filtro oEmbed dal contenuto:
remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result');L'angolo GDPR
Dal punto di vista della protezione dei dati, gli embed oEmbed sono essenzialmente il caricamento di contenuti di terze parti. Quando un visitatore visualizza una pagina con un embed di YouTube, il suo browser effettua richieste ai server di Google — trasferendo indirizzo IP, cookie e dati di fingerprinting del browser. Secondo il GDPR, questo può richiedere un consenso preventivo.
Diversi plugin WordPress affrontano questo problema caricando gli embed in modo lazy dietro un clic di consenso (il visitatore vede un placeholder e deve cliccare per caricare l'embed effettivo). Questo è un approccio comune nel mercato di lingua tedesca dove l'applicazione del GDPR è particolarmente rigorosa.
Come aiuta InspectWP
InspectWP verifica se l'oEmbed discovery è abilitato sul tuo sito WordPress cercando il tag link oEmbed nell'HTML della tua pagina. Se è presente e non avevi intenzione di rendere disponibili i tuoi contenuti per l'embedding su altri siti, il report ti avvisa così puoi decidere se disabilitarlo.