Session-Cookie ohne Secure-Flag
Worum es geht
Ihre Website setzt ein Cookie (typischerweise PHPSESSID, laravel_session, _ga usw.) ohne Secure-Flag. Der Browser sendet es auch über unverschlüsseltes HTTP, sobald sich die Gelegenheit bietet.
Warum das ein Problem ist
Ein Angreifer, der Zugriff auf das Netzwerk zwischen Ihnen und dem Nutzer hat (Café-WLAN, kompromittierter Router, ISP in einem Land mit aktiver Überwachung), kann:
- Das Cookie abhören und die Session übernehmen.
- Den Browser über einen unzusammenhängenden HTTP-Link dazu bringen,
http://example.czaufzurufen, und das Cookie dort abfangen.
Selbst wenn Sie überall HTTPS einsetzen, reicht es ohne Secure aus, dass der Nutzer in einem anderen Tab eine beliebige HTTP-Seite derselben Domain geöffnet hat — und das Cookie leckt.
So beheben Sie das
Das Ziel ist, alle drei Sicherheits-Flags zu setzen: Secure, HttpOnly und SameSite.
Session-Cookies (am wichtigsten)
PHP:
# php.ini (nebo .htaccess s php_value)
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = "Lax"Node.js (express-session):
app.use(session({
secret: process.env.SESSION_SECRET,
cookie: {
secure: true,
httpOnly: true,
sameSite: 'lax',
maxAge: 1000 * 60 * 60 * 24,
}
}));Laravel (config/session.php):
'secure' => true,
'http_only' => true,
'same_site' => 'lax',WordPress: WordPress verwaltet Sessions über Cookies, hat aber kein automatisches Hinzufügen des Secure-Flags. Verwenden Sie das Plugin Cookies Flags oder fügen Sie es manuell hinzu:
// wp-config.php
define('COOKIE_DOMAIN', '.example.cz');
@ini_set('session.cookie_secure', 1);
// functions.php
add_action('init', function () {
if (!is_ssl()) return;
foreach ($_COOKIE as $name => $val) {
setcookie($name, $val, [
'expires' => 0,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax',
]);
}
});Cookies von Drittanbietern (Analytics, Retargeting)
Cookies, die Drittanbieter setzen (Google Analytics, _fbp usw.), kontrollieren Sie nicht. Stellen Sie zumindest sicher, dass Sie sie auf einer https://-Seite setzen — der Drittanbieter fügt dann standardmäßig das Secure-Flag hinzu.
Überprüfung
DevTools → Application → Cookies. Sehen Sie sich die Spalte Secure an — sie sollte bei allen Cookies, die irgendeine Authentifizierung tragen, true sein.