Nette a OAuth2 – používání sessions

MartinVolenec
Člen | 36
+
0
-

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:

  1. Opravdu je nutné mít sessions zapnuté pro tyto funkcionality?
  2. 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.
  3. 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 | 1028
+
+4
-
  1. 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.
  2. Žá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 implementaci UserStorage, ta výchozí ukládá identitu do session.
  3. 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.
MartinVolenec
Člen | 36
+
0
-

Nádherná odpověď. Moc děkuji.