Artikel teilen

WordPress 7.2 bekommt einen neu gebauten HTML-Filter: Die Funktion wp_kses() bereinigt Kommentare, Beiträge und Plugin-Ausgaben künftig mit dem HTML-Parser des Kerns statt mit regulären Ausdrücken. Der Umbau steckt seit dem 7. Oktober im Entwicklungszweig und verändert, wie WordPress Sonderzeichen, Code-Beispiele und eingebettetes SVG ausgibt. Bis zur ersten Beta am 20. Oktober bleiben Betreibern elf Tage zum Testen.

drweb.de als bevorzugte Quelle auf Google hinzufügenQualitätsgeprüfte Inhalte direkt in Google News & DiscoverJetzt hinzufügen

Der HTML-Filter von WordPress behandelte bisher Text zwischen zwei spitzen Klammern wie ein Tag. Im Beispiel aus dem Entwicklerblog Make WordPress Core verschwand deshalb ein halber Satz, weil er zwischen „<$500“ und „>5yo“ stand.[1] Entwickler Dennis Snell hat den Filter jetzt auf die HTML-API umgestellt, der Commit landete am 7. Oktober im Code für Version 7.2.[2]

Das Wichtigste in Kürze

  • In der Entwicklerversion arbeitet wp_kses() seit dem 7. Oktober mit der HTML-API, die fertige Version 7.2 soll am 8. Dezember erscheinen.
  • Plugins und Themes müssen keinen Code ändern, die Ausgabe sieht trotzdem anders aus: Tags in Kleinbuchstaben, Attribute in doppelten Anführungszeichen, Sonderzeichen neu kodiert.
  • Nicht erlaubte script- und style-Elemente entfernt der Filter künftig samt Inhalt, abgebrochene Tags am Ende einer Eingabe fallen weg.
  • Ein Filter schaltet vorerst auf den alten Code zurück, die Altfassung kann aber schon mit 7.2.0 verschwinden.

Warum genügt der alte HTML-Filter nicht mehr?

Ein Sieb mit Buchstaben-Suppe, orange Wäscheklammer und ein Schildchen
WordPress entfernt durch wp_kses() potentiell schädliche Inhalte aus Kommentaren und Beiträgen von Nutzern ohne HTML-Berechtigung

Über wp_kses() entfernt WordPress aus Kommentaren und aus Beiträgen von Nutzern ohne das Recht auf ungefiltertes HTML alles, was Schadcode einschleusen könnte. Viele Plugins schicken auch ihre eigene Ausgabe durch den Filter, meist über wp_kses_post(). Die ursprüngliche kses-Bibliothek entstand, bevor HTML5 das Zerlegen von HTML verbindlich regelte. WordPress filterte bisher mit einer Kette aus Funktionen, String-Operationen und regulären Ausdrücken.[1]

Filter dieser Bauart lesen manches Markup anders als der Browser. Was der Filter als harmlosen Text durchwinkt, setzt der Browser unter Umständen als Element zusammen. Die HTML-API steckt seit WordPress 6.2 im Kern und zerlegt Markup nach den Regeln der HTML-Spezifikation, also so wie ein Browser.[3] Der neue Filter baut seine Ausgabe aus dem zerlegten Dokument neu auf, statt im Originaltext zu flicken. Laut Pull Request erledigt der Umbau nebenbei zehn ältere Fehlermeldungen, darunter Inhaltsverluste bei sehr langen Attributwerten und verstümmeltes CSS.[4]

WordPress schließt regelmäßig gespeicherte XSS-Lücken, bei denen eingeschleustes Markup später im Browser eines Administrators läuft. Das Sicherheitsupdate auf WordPress 7.1.3 behob am 6. Oktober eine solche Lücke auf der Verwaltungsseite für Kommentare.[5] 2019 ermöglichte ein Fehler beim Nachbearbeiten von Links in Kommentaren sogar Codeausführung ohne Anmeldung (CVE-2019-9787).[6] Bei Plugins häufen sich Lücken derselben Klasse, zuletzt bei W3 Total Cache über Kommentarinhalte und bei Kirki über die Registrierung.

Welche Inhalte sehen nach dem Update anders aus?

Der neue Filter gibt nicht mehr den bearbeiteten Originaltext aus, sondern schreibt das Markup frisch: Tag-Namen in Kleinbuchstaben, Attributwerte in doppelten Anführungszeichen, Zeichenreferenzen einheitlich kodiert.[1] Für den Commit mussten die Entwickler zahlreiche Tests anpassen, weil die Tests fest verdrahtete Eigenheiten des alten Filters erwarteten.[2] Eigene Prüfskripte, die Ausgaben Zeichen für Zeichen vergleichen, schlagen deshalb ebenfalls an.

Steht in einer Anleitung eine URL mit einem unmaskierten Und-Zeichen als Text auf der Seite, dekodiert der neue Filter benannte Zeichen ohne Semikolon wie ein Browser. Aus ?preview=true&section=grilling in einem Code-Element wird dann ?preview=true§ion=grilling, weil &sect für das Paragrafenzeichen steht. In href-Attributen bleibt die Zeichenfolge unangetastet. Snell rät, das Zeichen im Text immer als &amp; zu schreiben.[1]

Nicht erlaubte script- und style-Elemente löscht der Filter künftig samt Inhalt. Bisher verschwanden nur die Tags, der JavaScript-Code stand anschließend als lesbarer Text auf der Seite. Abgebrochene Tags am Ende einer Eingabe schneidet der neue Code ab, der alte zeigte solche Reste maskiert an.

Eingebettetes SVG und MathML liest der Filter nur so weit, wie die Struktur eindeutig bleibt. Wechselt das Markup innerhalb solcher Elemente in die HTML-Schreibweise, endet die Ausgabe vor dem Element. Strenger fasst der Filter außerdem fehlerhafte HTML-Kommentare, Dokumente mit noscript-Element und CDATA-Abschnitte an.[1] Themes, die Icons als Inline-SVG durch wp_kses() schicken, gehören deshalb auf die Testliste.

So filtert wp_kses() ab WordPress 7.2
Vier Fälle aus dem Entwicklerblog, Stand 9. Oktober 2026. Prüfen Sie diese Inhalte vor dem Update auf einer Testumgebung.
Spitze Klammern im Text
BisherDer Text zwischen „<“ und „>“ verschwand wie ein Tag.
Ab 7.2Beide Zeichen bleiben als maskierter Text stehen.
Und-Zeichen in URLs
BisherDer Filter maskierte das Zeichen als &amp;.
Ab 7.2Kurzformen wie &sect werden zum Zeichen, aus „&section“ wird „§ion“.
Nicht erlaubtes script-Element
BisherDie Tags fielen weg, der Code blieb als lesbarer Text stehen.
Ab 7.2Der Filter entfernt das Element samt Inhalt.
SVG und MathML
BisherDer Filter ließ verschachteltes Markup durch.
Ab 7.2Bei HTML-Schreibweise endet die Ausgabe vor dem Element.

Wann kommt der neue Filter?

07.10.
Commit
Der Umbau landet im Code für WordPress 7.2.
20.10.
Beta 1
Erste Testversion für Staging-Umgebungen.
17.11.
Release Candidate 1
Die Testversion soll der fertigen Fassung entsprechen.
08.12.
WordPress 7.2
Der alte Parser kann bereits mit dieser Version entfallen.

Ein Sicherheitsfilter, der HTML anders liest als der Browser, lässt Angreifern eine Lücke. WordPress 7.2 schließt diese Lücke im Kern, der Preis dafür sind Tests bei Themes und Plugins.

Markus Seyfferth, Chefredakteur Dr. Web
Zitat teilen

Was sollten Betreiber und Agenturen bis zur Beta testen?

Die erste Beta von WordPress 7.2 erscheint am 20. Oktober, die fertige Version am 8. Dezember.[7] Bis dahin lässt sich der alte Parser über einen Filter zurückholen. Snell schließt aber nicht aus, dass die Altfassung schon mit 7.2.0 verschwindet, und bittet um Rückmeldungen vor dem Release.[1] Vier Schritte lohnen sich jetzt:

  • Testumgebung aufsetzen: Spielen Sie die Entwicklerversion, etwa über das Plugin WordPress Beta Tester, auf einem Staging-Server ein, nie auf der Live-Website.
  • Kritische Inhalte durchsehen: Prüfen Sie Kommentare, Beiträge von Gastautoren, Formular- und Widget-Ausgaben, Inline-SVG-Icons sowie Code-Beispiele mit URLs.
  • Multisite gesondert prüfen: In Netzwerken dürfen nur Super-Admins ungefiltertes HTML speichern. Inhalte der übrigen Website-Admins laufen deshalb durch den neuen Filter.
  • Notbremse kennen: Mit add_filter( 'wp_kses_force_legacy_parser', '__return_true' ); in einem Must-Use-Plugin greift vorübergehend der alte Code. Melden Sie Abweichungen gerne im Ticket 66208.

Für Plugin-Hersteller mit Kunden in der EU gilt seit dem 11. September 2026 die Meldepflicht des Cyber Resilience Act für aktiv ausgenutzte Schwachstellen.[8] Ein Filter, der Markup wie der Browser liest, nimmt Plugin-Entwicklern einen Teil der XSS-Abwehr ab, ersetzt das eigene Maskieren jeder Ausgabe aber nicht. Agenturen mit vielen Kundensites planen den Test am besten vor dem Dezember-Update ein. Tarife mit Staging-Umgebung auf Knopfdruck stellt der WordPress-Hosting-Vergleich gegenüber.

FAQ: WordPress 7.2 baut den HTML-Filter wp_kses neu

Was macht wp_kses() in WordPress?

wp_kses() ist der HTML-Filter von WordPress. Die Funktion entfernt aus Kommentaren und aus Beiträgen von Nutzern ohne das Recht auf ungefiltertes HTML alle nicht erlaubten Tags und Attribute. Viele Plugins bereinigen damit auch ihre eigene Ausgabe, meist über wp_kses_post().

Was ändert sich an wp_kses() in WordPress 7.2?

Ab WordPress 7.2 zerlegt wp_kses() Markup mit der HTML-API des Kerns statt mit regulären Ausdrücken. Die Ausgabe wird dabei vereinheitlicht: Tags in Kleinbuchstaben, Attribute in doppelten Anführungszeichen. Nicht erlaubte script- und style-Elemente entfernt der Filter samt Inhalt.

Müssen Plugins und Themes für den neuen Filter angepasst werden?

Die Schnittstelle von wp_kses() bleibt gleich, Plugins und Themes müssen keinen Code ändern. Die Ausgabe kann sich trotzdem unterscheiden, etwa bei Inline-SVG, Code-Beispielen mit URLs oder abgebrochenen Tags. Testen Sie deshalb vor dem Update auf einer Staging-Umgebung.

Lässt sich der alte HTML-Filter in WordPress 7.2 weiter nutzen?

Vorerst ja. Der Filter wp_kses_force_legacy_parser mit dem Rückgabewert true schaltet auf den alten Code zurück. Die Altfassung soll in einer künftigen Version entfallen, laut Entwickler Dennis Snell womöglich schon mit WordPress 7.2.0.

Quellen

[1] Make WordPress Core: Progress Report: wp_kses() (Dennis Snell, 7. Oktober 2026)

[2] GitHub, WordPress/wordpress-develop: KSES: Reimplement with Tag Processor (Changeset 64233, 7. Oktober 2026)

[3] Make WordPress Core: Introducing the HTML API in WordPress 6.2 (7. März 2023)

[4] GitHub, WordPress/wordpress-develop: Pull Request 13271: KSES: Reimplement with Tag Processor

[5] WordPress.org News: WordPress 7.1.3 Maintenance and Security Release (6. Oktober 2026)

[6] NVD: CVE-2019-9787, WordPress vor 5.1.1: fehlerhafte Filterung von Kommentaren

[7] Make WordPress Core: WordPress 7.2 Release Party Schedule (6. Oktober 2026)

[8] EUR-Lex: Verordnung (EU) 2024/2847 (Cyber Resilience Act), Art. 14 und Art. 71

Mehr Newshunger?

4,5 11 Bewertungen

Wie hat Ihnen dieser Artikel gefallen?