1. Heartbeat API
Was ist das?
JavaScript-basiertes Polling-System. Schickt regelmässig AJAX-Requests vom Browser an /wp-admin/admin-ajax.php.
Wozu gut?
- Autosave – Entwürfe alle ~60s automatisch speichern
- Post-Locking – verhindert gleichzeitiges Bearbeiten durch mehrere User
- Session-Ablauf – meldet User ab wenn Login-Session ausläuft
- Plugin-Hooks – Plugins können eigene Daten mitsenden (WooCommerce, Yoast etc.)
Standard-Intervalle
| Context | Interval |
|---|---|
| Post-Editor | 15s |
| Dashboard | 60s |
| Frontend | deaktiviert (ausser Plugins aktivieren es) |
Problem
Auf schwachen VPS / Shared Hosting spürbar
Konstante Serverlast – auch ohne aktive Arbeit
Plugins wie WooCommerce/Yoast hängen sich rein und schicken Zusatzdaten
Legacy-Status
Nicht legacy – wird aktiv genutzt, aber oft unnötig aggressiv konfiguriert.
Best Practice
// Interval erhöhen (empfohlen: 60s)
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60;
return $settings;
});
// Autosave deaktivieren
add_filter('heartbeat_settings', function($settings) {
$settings['autostart'] = false;
return $settings;
});
// Komplett deaktivieren (verlierst Autosave + Post-Locking)
add_filter('heartbeat_disable', '__return_true');Empfehlung: Interval auf 60s setzen. Komplett deaktivieren nur bei Einzelbetrieb ohne Redakteure.
2. Pingbacks, Trackbacks & Ping-Dienste
Was ist das?
Automatische Benachrichtigungssysteme aus der Blog-Ära (~2003).
| Feature | Funktion |
|---|---|
| Pingback | WP benachrichtigt verlinkte Blogs automatisch |
| Trackback | Ältere, manuelle Variante von Pingback |
| Ping-Dienste | WP meldet neue Posts an Dienste wie rpc.pingomatic.com |
Wozu gut?
Ursprünglich: gegenseitige Verlinkung und Sichtbarkeit in der Blogosphäre.
Problem
- Kaum noch genutzt oder ausgewertet
- Missbrauch als DDoS-Vektor (XML-RPC Pingback-Amplification)
- Erzeugt ausgehende Requests bei jedem Publish
- Einfallstor für Spam-Kommentare
Legacy-Status
Vollständig legacy. Kein sinnvoller Einsatz auf Standard-KMU-Sites.
Best Practice
// Pingbacks deaktivieren (für neue Posts)
add_filter('pre_option_default_ping_status', '__return_zero');
add_filter('pre_option_default_pingback_flag', '__return_zero');
// Selbst-Pingbacks verhindern
add_action('pre_ping', function(&$links) {
$home = home_url();
foreach ($links as $key => $link) {
if (str_starts_with($link, $home)) {
unset($links[$key]);
}
}
});
// Ping-Dienste deaktivieren
add_filter('privacy_ping_filter', '__return_false');Alternativ in Einstellungen → Schreiben: Feld «Aktualisierungsdienste» leeren.
Empfehlung: Alles deaktivieren. Kein Verlust für Standard-Sites.
3. XML-RPC
Was ist das?
Remote-Protokoll über xmlrpc.php – erlaubt externen Apps, mit WP zu kommunizieren ohne Browser-Login.
Wozu gut?
| Use Case | Heute relevant? |
|---|---|
| WordPress Mobile App | Ja – aber kaum genutzt |
| Jetpack | Ja – zwingend erforderlich |
| Desktop-Blogging-Tools (MarsEdit, WLW) | Nein – tot |
| IFTTT / Zapier | Nein – nutzen heute REST API |
| Drittanbieter-Poster-Tools | Nein – meist auf REST umgestellt |
Problem
- Brute-Force-Ziel – ein Request kann tausende Login-Versuche bündeln (
system.multicall) - DDoS-Amplification via Pingback-Mechanismus
- Läuft standardmässig aktiv, auch wenn niemand es braucht
- PHP-Stack wird bei jedem Angriff mitgestartet
Legacy-Status
Weitgehend legacy. Nur noch relevant wenn Jetpack oder WP Mobile App aktiv genutzt wird.
Best Practice
PHP-Ebene (blockiert, Datei bleibt bestehen):
add_filter('xmlrpc_enabled', '__return_false');Nginx-Ebene (bevorzugt – PHP wird gar nicht gestartet):
location = /xmlrpc.php {
deny all;
}Empfehlung: Auf Nginx-Ebene blocken. Besser als PHP-Filter, da kein Prozess gestartet wird.
Zusammenfassung
| Feature | Legacy? | Deaktivieren? | Methode |
|---|---|---|---|
| Heartbeat | Nein | Interval erhöhen | PHP-Filter |
| Pingbacks/Trackbacks | Ja | Ja | PHP-Filter + WP-Einstellungen |
| Ping-Dienste | Ja | Ja | PHP-Filter oder WP-Einstellungen |
| XML-RPC | Weitgehend | Ja (ausser Jetpack) | Nginx deny all |