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