Hlavní navigace

Názor ke článku PHP sessions v databázi, šifrovaně od Ondřej Novák - No už delší čas to dělám tak, že...

  • 9. 6. 2015 11:14

    Ondřej Novák (neregistrovaný)

    No už delší čas to dělám tak, že session nikam neukládám. Session je řetězec, který si na sobě nese všechny důležité informace, jako userid, platnost, efektivni uroven opravneni a dalsi informace zabalene v bináru, podepsané přes nějaký salt a HMAC-SHA256 a to celé Base64. Pokud bych potřeboval skrýt údaje v session, pak ji mohu ještě AESem zašifrovat (a protože každá session má jiný rozsah platnosti, bude každý řetězec jiný rozsypaný čaj.

    Samotná session má platnost nějakou krátkou dobu, třeba 15min, nebo hodinu a rozpoznají ji všechni komponenty, kde se používá, aniž by si musely ta data předávat. Klient (nebo prostřednictvím serveru) je třeba session občas prodloužit, aby nevypršela (změní se ten řetězec).

    Nevýhodou těchto session je, že se nedají zneplatnit před vypršením, proto se platnost udržuje krátká.

    Pro dlouhodobé session se používá refresh token, který se dá použít k vytvoření session. Tyto token lze udržovat v databázi, není k ním potřeba tak často přistupovat (jen když vyprší původní session).

    Celý to je ve shodě se systémem OAuth 2.0