Wenn du eine WordPress-Website mit einer Staging-Umgebung verwaltest, ist das Pushen von Änderungen auf die Live-Seite ein kritischer Prozess. Es stellt sicher, dass deine Live-Seite konsistent und funktionsfähig bleibt. Allerdings können während dieses Prozesses aktive Benutzersitzungen von der Staging-Seite in die Produktionsumgebung übernommen werden, was Sicherheitsrisiken verursachen oder zu unerwartetem Verhalten führen kann – etwa, dass Benutzer veraltete Inhalte sehen.
Um dies zu beheben und sicherzustellen, dass alle Benutzer die aktualisierte Website sehen, kannst du alle Benutzer automatisch nach dem Pushen deiner Staging-Seite auf die Live-Seite abmelden – mithilfe eines benutzerdefinierten WordPress-Filters. Dadurch werden alle Sitzungsdaten der Staging-Seite ungültig gemacht und Benutzer müssen sich erneut anmelden. So kannst du diese Lösung mit WP Staging umsetzen.
Contents
Das Problem: Persistente Sitzungen
Wenn du eine Staging-Seite auf die Live-Seite pushst, werden auch Benutzersitzungsdaten einschließlich Login-Tokens übertragen. Das hat folgende Auswirkungen:
- Benutzer der Staging-Seite bleiben möglicherweise auf der Live-Seite angemeldet.
- Sensible Daten könnten unbeabsichtigt zugänglich bleiben.
- Sicherheitsrisiken können durch Missbrauch von Tokens entstehen.
Die Lösung: Einen benutzerdefinierten Filter verwenden, um Benutzersitzungen zu invalidieren
Durch die Nutzung der wpstg_pushing_complete Action von WP Staging kannst du eine Funktion auslösen, die alle aktiven Benutzersitzungen sofort nach einem Push invalidiert. Dies wird erreicht, indem die in der WordPress-Datenbank gespeicherten Sitzungstokens gelöscht werden.
Code-Implementierung
Hier ist das Code-Snippet, um alle Benutzer nach dem Pushen deiner Staging-Seite auf die Live-Seite abzumelden:
/**
* Log out all users after pushing a staging site to production.
*/
function myPrefixinvalidateAllUsers()
{
// Access the global $wpdb object to interact with the database
global $wpdb;
// Cleanup session tokens from the usermeta table
$wpdb->query("DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'session_tokens'");
}
// Hook the function to WP Staging's 'wpstg_pushing_complete' action
add_action('wpstg_pushing_complete', 'myPrefixinvalidateAllUsers');
So funktioniert es
- Datenbank-Bereinigung:
Die FunktionmyPrefixinvalidateAllUsers()greift auf die WordPress-Tabelleusermetazu und entfernt alle Einträge, die mit dem Meta-Keysession_tokensverknüpft sind. Dadurch werden alle aktiven Benutzersitzungen effektiv ungültig gemacht. - Auslösen der Action:
Der Hookwpstg_pushing_completewird ausgelöst, wenn WP Staging den Prozess des Pushens einer Staging-Seite auf die Live-Seite abgeschlossen hat. Die Funktion wird in diesem Stadium automatisch ausgeführt. - Ergebnis:
Sobald die Sitzungstokens entfernt sind, werden alle Benutzer abgemeldet und müssen sich erneut anmelden, um auf die Live-Seite zugreifen zu können.
Schritte zur Umsetzung
- Ein Must-Use Plugin (MU-Plugin) erstellen:
- Navigiere zum Verzeichnis
wp-content/mu-plugins/deiner Produktionsseite. Falls das Verzeichnis nicht existiert, erstelle es. - Erstelle eine neue PHP-Datei, z. B.
invalidate-user-sessions.php. - Kopiere das obige Code-Snippet und füge es in diese Datei ein.
- Navigiere zum Verzeichnis
- Bereitstellen:
- Speichere die Datei und stelle sicher, dass sie in das
mu-plugins-Verzeichnis hochgeladen wurde. - WP Staging meldet nun automatisch alle Benutzer nach jedem Push auf die Live-Seite ab.
- Speichere die Datei und stelle sicher, dass sie in das
Vorteile
- Verbesserte Sicherheit: Benutzer aus der Staging-Umgebung können nicht versehentlich auf die Live-Seite zugreifen.
- Bessere Kontrolle: Stellt sicher, dass sich nur verifizierte Benutzer nach dem Deployment erneut anmelden können.
- Optimierte Verwaltung: Automatisiert die Sitzungsverwaltung während des Deployment-Prozesses.
Zusätzliche Hinweise
- Diese Lösung gilt nur für die Push-to-Production-Funktion von WP Staging. Sie beeinflusst keine anderen WordPress-Funktionalitäten oder danach erstellte Sitzungen.
- Bei Multisite-Setups stelle sicher, dass das Skript bei Bedarf auf allen Unterseiten ausgeführt wird.
Mit diesem Ansatz kannst du eine sichere und zuverlässige Produktionsumgebung aufrechterhalten und einen reibungslosen Übergang von Staging zur Live-Seite gewährleisten.