Du fügst einen YouTube-Link in einen WordPress-Beitrag ein, und er verwandelt sich wie von selbst in einen eingebetteten Videoplayer. Kein iframe zum Kopieren, kein HTML-Gefummel, einfach eine URL, die zu Rich Media wird. Diese Magie ist oEmbed, ein offenes Protokoll, das seit Version 2.9 (2009) fest in WordPress eingebaut ist. Es ist praktisch, weitgehend unsichtbar und (je nach Blickwinkel) entweder ein hilfreiches Feature oder ein Datenschutz- und Sicherheitsaspekt, über den du Bescheid wissen solltest.
Wie das oEmbed-Protokoll Schritt für Schritt funktioniert
Wenn du eine URL in den WordPress-Block-Editor einfügst, wickelt WordPress sie nicht einfach in ein iframe und hofft das Beste. Der Prozess hat drei klare Schritte:
- Provider-Abgleich: WordPress prüft die URL gegen eine fest einprogrammierte Liste vertrauenswürdiger oEmbed-Anbieter (YouTube, Vimeo, Twitter, Spotify usw.). Stimmt die URL mit einem bekannten Anbieter überein, weiß WordPress, wo es den Embed-Code anfragen muss.
- API-Anfrage: WordPress schickt eine HTTP-Anfrage an den oEmbed-Endpunkt des Anbieters und übergibt die URL sowie die gewünschten Embed-Abmessungen. Für ein YouTube-Video geht das z. B. an
https://www.youtube.com/oembed?url=...&format=json. - Embed-Rendering: Der Anbieter antwortet mit JSON, das den Embed-HTML-Code (meistens ein iframe), einen Titel, eine Thumbnail-URL und Metadaten wie den Autorennamen enthält. WordPress cached diese Antwort und rendert den Embed im Beitrag.
Wenn die URL keinem bekannten Anbieter entspricht, kann WordPress auch oEmbed-Discovery versuchen: es ruft die Ziel-URL ab und sucht nach einem <link type="application/json+oembed">-Tag im HTML, das auf einen oEmbed-Endpunkt verweist. So können auch weniger bekannte Dienste Embeds anbieten, ohne auf der WordPress-Whitelist zu stehen.
Unterstützte oEmbed-Anbieter in WordPress
WordPress liefert Unterstützung für eine lange Liste von Anbietern mit. Die am häufigsten genutzten sind:
- Video: YouTube, Vimeo, Dailymotion, VideoPress, TikTok
- Audio: Spotify, SoundCloud, Mixcloud
- Social: Twitter/X, Instagram, Reddit, Tumblr, Bluesky
- Bilder: Flickr, Imgur, SmugMug
- Sonstiges: WordPress.com-Beiträge, Speaker Deck, Crowdsignal, Pocket Casts
Plugins können weitere Anbieter hinzufügen, und WordPress erlaubt es auch, eigene oEmbed-Provider über die Funktion wp_oembed_add_provider() zu registrieren.
WordPress als oEmbed-Provider: Discovery und REST API
Was viele nicht wissen: WordPress konsumiert oEmbed nicht nur; es fungiert auch als Anbieter. Standardmäßig stellt jede WordPress-Seite einen oEmbed-Endpunkt unter /wp-json/oembed/1.0/embed bereit und fügt jeder Seite einen Discovery-Link hinzu:
<link rel="alternate" type="application/json+oembed"
href="https://example.com/wp-json/oembed/1.0/embed?url=..." />Das bedeutet: Andere WordPress-Seiten (oder jede oEmbed-fähige Anwendung) können deine Beiträge einbetten, indem sie einfach deren URL einfügen. Die eingebettete Vorschau enthält den Beitragstitel, einen Auszug, den Seitennamen und den Autor, womit wir bei den Sicherheits- und Datenschutzaspekten wären.
oEmbed-Sicherheitsrisiken und Datenschutzbedenken
Die oEmbed-Provider-Funktionalität hat mehrere Aspekte, die man kennen sollte:
- Informationspreisgabe: Der oEmbed-Endpunkt gibt Beitragstitel, Auszüge, Autoren-Anzeigenamen und Website-Metadaten an jeden zurück, der ihn abfragt. Man muss nicht eingeloggt sein. Das kann ein Problem sein, wenn du Inhalte veröffentlichst, bei denen die Autorenidentität nicht öffentlich sein sollte, oder wenn du die von deiner Seite preisgegebenen Informationen minimieren willst.
- SSRF-Potenzial: Wenn WordPress oEmbed-Daten für im Editor eingefügte URLs abruft, macht es ausgehende HTTP-Anfragen. Theoretisch könnte eine manipulierte URL versuchen, dies für Server-Side Request Forgery auszunutzen und WordPress dazu bringen, interne Ressourcen anzufragen. WordPress hat Schutzmaßnahmen dagegen, aber die Angriffsfläche existiert.
- Laden von Drittanbieter-Ressourcen: Jeder eingebettete Dienst lädt eigene Skripte, Stylesheets und Tracking-Mechanismen von externen Servern. Ein YouTube-Embed lädt Googles Tracking-Skripte. Ein Twitter-Embed lädt die Skripte von X. Jeder davon erzeugt Third-Party-Requests, die für die DSGVO-Konformität relevant sind und die Ladezeit beeinflussen können.
- REST-API-Oberfläche: Der oEmbed-Endpunkt ist Teil der WordPress-REST-API. Wenn du die öffentlich zugänglichen API-Endpunkte deiner Seite minimieren willst (ein gängiger Security-Hardening-Schritt), erweitert oEmbed-Discovery diese Oberfläche.
oEmbed in WordPress deaktivieren
Wenn du nicht willst, dass andere Seiten deinen Content einbetten, oder wenn du die Informationspreisgabe deiner Seite reduzieren möchtest, kannst du die Provider-Seite deaktivieren, ohne die Fähigkeit zu verlieren, externe Inhalte in deinen eigenen Beiträgen einzubetten:
// oEmbed Discovery Links aus dem HTML-Head entfernen
remove_action('wp_head', 'wp_oembed_add_discovery_links');
// oEmbed-spezifisches JavaScript aus dem Frontend entfernen
remove_action('wp_head', 'wp_oembed_add_host_js');
// oEmbed REST API Route deaktivieren
add_filter('embed_oembed_discover', '__return_false');Wenn du auch verhindern willst, dass WordPress oEmbed-Daten für eingefügte URLs abruft (z. B. um ausgehende Requests komplett zu vermeiden), kannst du den oEmbed-Filter aus dem Content entfernen:
remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result');oEmbed und DSGVO: Drittanbieter-Inhalte und Einwilligungspflicht
Aus Datenschutzsicht sind oEmbed-Embeds im Grunde Drittanbieter-Inhalte, die geladen werden. Wenn ein Besucher eine Seite mit einem YouTube-Embed aufruft, macht sein Browser Anfragen an Googles Server, und überträgt dabei seine IP-Adresse, Cookies und Browser-Fingerprint-Daten. Unter der DSGVO kann das eine vorherige Einwilligung erfordern.
Mehrere WordPress-Plugins adressieren das, indem sie Embeds hinter einem Consent-Klick nachladen (der Besucher sieht einen Platzhalter und muss klicken, um den eigentlichen Embed zu laden). Das ist ein gängiger Ansatz im deutschsprachigen Raum, wo die DSGVO-Durchsetzung besonders strikt ist.
oEmbed-Konfiguration prüfen mit InspectWP
InspectWP prüft, ob deine WordPress-Seite oEmbed-Discovery aktiviert hat, indem es nach dem oEmbed-Link-Tag im HTML deiner Seite sucht. Wenn es vorhanden ist und du nicht beabsichtigt hast, deinen Content zum Einbetten auf anderen Seiten freizugeben, gibt dir der Bericht einen Hinweis, damit du entscheiden kannst, ob du es deaktivieren möchtest.