WordPress: Mehr Sicherheit bei Cookies
Verfasst: 17.05.2024, 10:17
Hallo,
in den letzten Tagen werden immer mehr Berichte über geklaute Cookies bei WordPress veröffentlicht. Die einen sagen, 60% aller gehackten WordPress Installationen liegt an geklauten Cookies. Andere Sagen, dies ist per FALSCH.
Bei der ganzen Diskussion ist mir aufgefallen, dass man Cookies absichern kann. Hier meine Empfehlung:
Secure- und HttpOnly-Flags sind zusätzliche Sicherheitseinstellungen für Cookies, die helfen, die Sicherheit von Webanwendungen zu erhöhen:
- Secure-Flag: Dieses Flag gibt an, dass ein Cookie nur über eine sichere HTTPS-Verbindung gesendet werden darf. Es verhindert, dass das Cookie über eine ungesicherte HTTP-Verbindung gesendet wird, was es vor Man-in-the-Middle-Angriffen schützt.
- HttpOnly-Flag: Dieses Flag verhindert, dass Client-Skriptsprachen wie JavaScript auf das Cookie zugreifen können. Das erhöht die Sicherheit, indem es Cross-Site-Scripting (XSS)-Angriffe erschwert, bei denen Angreifer versuchen könnten, das Cookie zu stehlen oder zu manipulieren.
Diese Flags werden vom Server gesetzt, wenn er das Set-Cookie-Header in der HTTP-Antwort sendet, und moderne Browser unterstützen diese Attribute, um die Sicherheit zu verbessern.
Die Sicherheit von Cookies in PHP-Projekten kann an verschiedenen Stellen konfiguriert werden, und jede Methode hat ihre eigenen Vor- und Nachteile:
1. php.in: Die zentrale Konfiguration in der `php.ini`-Datei ist effektiv, weil sie serverweit gilt. Wenn du Einstellungen wie `session.cookie_httponly` und `session.cookie_secure` hier setzt, werden sie für alle Anwendungen auf dem Server übernommen. Das macht es einfacher, eine konsistente Konfiguration zu gewährleisten.
2. .htaccess: Die Verwendung von `.htaccess`-Dateien ist spezifisch für den Apache-Webserver. Sie ermöglicht es dir, die PHP-Einstellungen auf Verzeichnisebene zu überschreiben, was nützlich sein kann, wenn du nicht auf die `php.ini`-Datei zugreifen kannst oder wenn du unterschiedliche Einstellungen für verschiedene Teile deiner Website benötigst.
3. PHP-Skript: Die direkte Einstellung im PHP-Skript mit `ini_set()` gibt dir die größte Flexibilität, da du diese Einstellungen dynamisch basierend auf der Logik deines Skripts ändern kannst. Es ist jedoch wichtig zu beachten, dass einige Einstellungen, wie `session.cookie_secure`, möglicherweise nicht zur Laufzeit geändert werden können, da sie vor dem Start der Session festgelegt werden müssen.
Im Allgemeinen ist es eine gute Praxis, Einstellungen so zentral wie möglich zu konfigurieren, um die Wartung zu vereinfachen und die Konsistenz zu gewährleisten. Die `php.ini`-Datei ist daher oft der bevorzugte Ort, gefolgt von der Verwendung von `.htaccess`, wenn du spezifische Anforderungen für verschiedene Verzeichnisse hast. Die direkte Konfiguration im PHP-Skript sollte mit Vorsicht verwendet werden und ist am besten für spezifische Fälle geeignet, in denen dynamische Einstellungen erforderlich sind.
Beste Grüße
Ralf
in den letzten Tagen werden immer mehr Berichte über geklaute Cookies bei WordPress veröffentlicht. Die einen sagen, 60% aller gehackten WordPress Installationen liegt an geklauten Cookies. Andere Sagen, dies ist per FALSCH.
Bei der ganzen Diskussion ist mir aufgefallen, dass man Cookies absichern kann. Hier meine Empfehlung:
Secure- und HttpOnly-Flags sind zusätzliche Sicherheitseinstellungen für Cookies, die helfen, die Sicherheit von Webanwendungen zu erhöhen:
- Secure-Flag: Dieses Flag gibt an, dass ein Cookie nur über eine sichere HTTPS-Verbindung gesendet werden darf. Es verhindert, dass das Cookie über eine ungesicherte HTTP-Verbindung gesendet wird, was es vor Man-in-the-Middle-Angriffen schützt.
- HttpOnly-Flag: Dieses Flag verhindert, dass Client-Skriptsprachen wie JavaScript auf das Cookie zugreifen können. Das erhöht die Sicherheit, indem es Cross-Site-Scripting (XSS)-Angriffe erschwert, bei denen Angreifer versuchen könnten, das Cookie zu stehlen oder zu manipulieren.
Diese Flags werden vom Server gesetzt, wenn er das Set-Cookie-Header in der HTTP-Antwort sendet, und moderne Browser unterstützen diese Attribute, um die Sicherheit zu verbessern.
Die Sicherheit von Cookies in PHP-Projekten kann an verschiedenen Stellen konfiguriert werden, und jede Methode hat ihre eigenen Vor- und Nachteile:
1. php.in: Die zentrale Konfiguration in der `php.ini`-Datei ist effektiv, weil sie serverweit gilt. Wenn du Einstellungen wie `session.cookie_httponly` und `session.cookie_secure` hier setzt, werden sie für alle Anwendungen auf dem Server übernommen. Das macht es einfacher, eine konsistente Konfiguration zu gewährleisten.
2. .htaccess: Die Verwendung von `.htaccess`-Dateien ist spezifisch für den Apache-Webserver. Sie ermöglicht es dir, die PHP-Einstellungen auf Verzeichnisebene zu überschreiben, was nützlich sein kann, wenn du nicht auf die `php.ini`-Datei zugreifen kannst oder wenn du unterschiedliche Einstellungen für verschiedene Teile deiner Website benötigst.
3. PHP-Skript: Die direkte Einstellung im PHP-Skript mit `ini_set()` gibt dir die größte Flexibilität, da du diese Einstellungen dynamisch basierend auf der Logik deines Skripts ändern kannst. Es ist jedoch wichtig zu beachten, dass einige Einstellungen, wie `session.cookie_secure`, möglicherweise nicht zur Laufzeit geändert werden können, da sie vor dem Start der Session festgelegt werden müssen.
Code: Alles auswählen
//setting basic configuration parameters
if (function_exists('ini_set')) {
ini_set('session.cookie_httponly', true);
ini_set('session.cookie_secure', true);
ini_set('session.use_only_cookies', true);
}
Beste Grüße
Ralf