Session cookie nemá Secure flag
Co to je
Vaše stránky nastavují cookie (typicky PHPSESSID, laravel_session, _ga, atd.) bez Secure flagu. Prohlížeč ji bude posílat i přes nešifrované HTTP, kdykoliv má příležitost.
Proč je to problém
Útočník, který má přístup k síti mezi vámi a uživatelem (kavárna Wi-Fi, kompromitovaný router, ISP v zemi s aktivním sledováním), může:
- Odposlechnout cookie a převzít session.
- Donutit prohlížeč navštívit
http://example.czpřes nesouvisející HTTP odkaz a zachytit cookie tam.
I když máte HTTPS všude, bez Secure stačí, aby měl uživatel v jiném tabu otevřený libovolný HTTP web na stejné doméně, a cookie unikne.
Jak to opravit
Cílem je nastavit všechny tři bezpečnostní flagy: Secure, HttpOnly a SameSite.
Session cookies (nejdůležitější)
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 řeší session přes cookies, ale auto-přidáníSecure nemá. Použijte plugin Cookies Flags nebo přidejte ručně:
// 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 třetích stran (analytika, retargeting)
Cookies, které nastavují třetí strany (Google Analytics, _fbp, atd.), neovládáte. Ujistěte se aspoň, že je nastavujete na https:// stránce — třetí strana pak defaultně přidá Secure flag.
Ověření
DevTools → Application → Cookies. Podívejte se na sloupec Secure — má být true u všech cookies, které nesou nějakou autentizaci.