Middle
Jaký je mechanismus práce relace ve webových aplikacích?
sobes.tech AI
Odpověď od AI
Mechanismus fungování relace je založen na uchovávání stavu uživatele mezi HTTP požadavky, které jsou svou podstatou bezstavové. Toho je dosaženo použitím unikátního identifikátoru relace.
Hlavní kroky:
- První požadavek uživatele: Uživatel odešle požadavek na webový server.
- Vytvoření relace: Pokud požadavek pochází od neznámého uživatele (bez identifikátoru relace), server vytvoří novou relaci na své straně (v paměti, v databázi, v souborovém systému) a vygeneruje unikátní identifikátor relace.
- Odeslání identifikátoru klientovi: Server odešle tento identifikátor klientovi ve formě cookie (
Set-Cookie: SESSIONID=xyz; path=/). - Uložení na klientovi: Prohlížeč uloží toto cookie a bude ho posílat se všemi následujícími požadavky na stejnou doménu (
Cookie: SESSIONID=xyz). - Identifikace na serveru: Při přijetí každého následujícího požadavku s cookie obsahujícího identifikátor relace, server použije tento identifikátor k nalezení odpovídající relace a získání uložených dat uživatele.
- Ukončení relace: Relace může skončit kvůli neaktivitě, při explicitním odhlášení uživatele nebo při zavření prohlížeče (pokud cookie nemá dobu platnosti).
Příklad použití relace pro ukládání autorizačních informací:
// Příklad v Java Servlets
HttpSession session = request.getSession(); // Získání nebo vytvoření relace
// Kontrola, zda je uživatel přihlášen
if (session.getAttribute("loggedInUser") == null) {
// Uživatel není přihlášen, přesměrování na přihlašovací stránku
response.sendRedirect("/login");
} else {
// Uživatel je přihlášen, získání dat
User user = (User) session.getAttribute("loggedInUser");
// ... práce s daty uživatele
}
Uložení relací:
- V paměti serveru (vhodné pro malé aplikace).
- V souborovém systému serveru.
- V databázi (klasická, škálovatelná varianta).
- V distribuovaných cache (Redis, Memcached) pro škálování na více serverů.
Bezpečnost:
- Použití flagů "secure" a "HttpOnly" pro cookie relace.
- Regenerace ID relace po úspěšném ověření.
- Nastavení vhodného časového limitu relace.
- Ochrana před session hijacking (zachycení relace).