Nette a OAuth2 – používání sessions
- MartinVolenec
- Člen | 36
Dobrý den,
vytvářím systém, kde na jedné straně je API a na druhé straně
Portál, který bere data z API a zobrazuje.
A autentizaci řeším pomocí frameworku OAuth 2.0. A implementace není
předmětem dotazu.
Pro zobrazovaní jsem právě kvůli Latte zvolil Nette.
Původně jsem chtěl udělat aplikaci sessions-less. Z důvodu bezpečnosti.
(I přes to, že Nette má sessions zabezpečené).
Nicméně jsem narazil. V konfiguraci jsem si nastavil:
<?php
session:
autoStart: false
?>
Ale poté mi v případě neajaxových dotazů (klasické redirecty)
přestali fungovat flash messages.
Někde jsem četl, že se ukládají právě do sessions. Stejně tak
i storeRequest. Ale jelikož session nemám zapnutou (PHPSESSID se i tak
generuje), tak se nemají kam ukládat.
Chci se tedy zeptat:
- Opravdu je nutné mít sessions zapnuté pro tyto funkcionality?
- Pokud sessions pro tyto funkcionality zapnu, může to ovlivnit nějak bezpečnost aplikace? Do sessions nemám skutečně v plánu nic ukládat.
- V případě zapnutí, budou se na serveru v tempu nějak sessions hromadit a jejich velikost se zvětšovat? Nebo v rámci výše zmíněných funkcionalit existuje jakési „zametání po sobě“?
Snad pochopíte můj dotaz a děkuji za odpověď.
- jiri.pudil
- Nette Blogger | 1032
- Ano, flash messages se ukládají do sessions pod vygenerovaným
identifikátorem, který se pak přilepí do URL jako parametr
_fid
. Nezaprasí to URL tolik, jako kdyby se do ní předávaly přímo flash messages, a identifikátor je tam hlavně proto, aby se vždy zobrazily správné flash messages, pokud uživatel pracuje ve více tabech. Obdobně to platí pro storeRequest. - Žádnou hrozbu tam nevidím, sessions jsou standardní mechanismus a Nette,
jak sám píšeš, je zabezpečuje, jak jen může. A pokud do session nebudeš
zapisovat nic jiného, nic jiného v ní ani nebude; jestli uživatele
přihlašuješ přes
User::login()
, pohlídej si zejména implementaciUserStorage
, ta výchozí ukládá identitu do session. - Nebudou. Když nastavíš
autoStart: smart
(což je výchozí hodnota), bude se session startovat a vytvářet jen pro požadavky, ve kterých se k ní přistupuje. Navíc implementace sessions v PHP po sobě sama pravidelně (v závislosti na nastavení) uklízí a sekce pro flash messages má životnost nanejvýš 30 sekund.