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:

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.

Reference