ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
Poor Http / Publisher : samonosná cookiePoor Http a Poor Publisher implementují
PoorSession. Jde o samonosnou cookie, do které může webová
aplikace ukládat různá data. Tento mechanismus je sice omezený
svou velikostí, nicméně k běžnému testování, zda je uživatel
přihlášen nebo si zapnul nějaký speciální režim, vyhovuje
dostatečně.
„Samonosná cookie – je
taková cookie, ve které jsou uložena všechna data aplikace a
není třeba dalšího úložiště dat. Proto jsou tyto data
kryptována, aby je uživatel nemohl nijak
podvrhnout.“
Celá implementace spočívá v triku, kdy jsou data
serializována, zaheslována, zkomprimována a nakonec převedena
na byte64. Opačnými kroky jsou pak data získána zpět. V
datech, ve slovníku, je také uvedena expirace session, takže
i v případě, že útočník podvrhne stará data, aplikace je
zahodí. Klíč kterým jsou data kryptována a následně
de-kryptována je samozřejmě konfigurovatelný, ve výchozím
stavu jde o identifikátor ze svn commitu příslušného souboru
(informace o poslední úpravě souboru na SF.net).
Vytvoření a zrušení session
Následující funkce doLogin vytvoří novou session. Do jejího
datového slovníku uloží id uživatele, časovou známku a pokud
vstupní proměnná ip není nastavena na None, False, 0 nebo
prázdný string, nastaví také ip adresu klientské aplikace.
Následně nastaví hlavičky odpovědi, čímž zajistí, že se tato
session dostane do klientské aplikace – browseru. Ve
skutečnosti nevytvoří novou session, ale použije již
existující session, kterou poslal browser serveru společne s
požadavkem.
Funkce doLogout naopak rovnou předpokládá, že společně s
požadavkem poslal browser i cookie ve které je uloženo id
přihlášeného uživatele. Pokud tomu tak je, zavolá metodu
destroy, která vymaže data, a nastaví session záporný čas.
Nakonec opět zapíše vytvořenou cookie do hlavičky odpovědi.
Díky tomu pak browser získá informaci že cookie může smazat.
I kdyby tomu tak nebylo a browser ji sám posílal dál, nebude
již obsahovat žádná data.
Práce se session
Naproti tomu, se funkce checkLogin pokouší získat Session z
cookie. Pokud je v pořádku a obsahuje id přihlášeného
uživatele a pokud má nastavenou správnou ip adresu klienta,
vrátí tuto session. V opačném případě zaloguje chybu,
případně smaže session a vrátí None. Volitelným parametrem je
redirectUri, ten pokud je nastaven a funkce vyhodnotí situaci
záporně, dojde k přesměrování na jinou adresu. Pod takovou
adresou, pak může server vracet chybovou hlášku o nutnosti
přihlášení, přihlašovací formulář atd.
Použití těchto funkcí může být například stejné, jako je v
následující ukázce kódu. Důležité je, že aby se data uložená
v session neztratila, je nutné je zapsat do hlavičky
odpovědi. Browser pak dle nastavení tuto cookie smaže, nebo s
dalším požadavkem pošle na server.
Veškerá práce se session je jasně limitovávána prací s
cookie. To znamená, že pokud nedojde k jejímu přepsání ze
strany serveru, klient ji bude vždy posílat automaticky,
dokud nevyprší. V případě testování přihlášení, kdy nedochází
k žádnému zápisu, resp. změně, není třeba ji s každou
odpovědí posílat, tedy generovat hlavičky. Navíc, třída
PoorSession vytváří novou session jak v případě, kdy server s
požadavkem žádnou cookie nedostal, tak i v případě kdy došlo
k její expiraci nebo z nějakého důvodu není čitelná.
Expirace je implicitně nastavena na 0, to znamená, že k
jejímu zneplatnění dojde až se rozhodne browser, to znamená
při zavření. Tato hodnota je pro kontrolu uvedena také v
datové části session pokud je nastavena. Je tedy silně
nedoporučováno nepoužívat klíč „expires“ v session slovníku
data, protože při
nastavení bude tato hodnota přepsána.
Dalším rozšířením by mohlo být zápis na filesystém serveru,
nebo do nějakého dalšího úložiště, například databáze. V
takovém případě je ale nutné do systému zahrnout nějaký
systém na mazání již zastaralých session. Protože ty jsou
předem nespecifikovatelně trvalé a jsou ukládány na straně
klienta, je použití právě samonosné cookie elmi výhodné a
velmi často dostačující.
Související články
Předchozí Celou kategorii (seriál)
Python (1.) - Zkroťte si hroznýše
Python (2.) - Datové typy Python (3.) - Proměnné a základní vstup a výstup Python (4.) - Operátory Python (5.) - Řídící struktury Python (6.) - Funkce Python (7.) - Jemný úvod do OOP Python (8.) - OOP v Pythonu Python (9.) - Další aspekty jazyka Python Python (10.) - Vstup a výstup Python (11.) - Řetězce Tři způsoby jak provozovat Python s Lighttpd Web v Pythonu s Poor Http nebo Poor Publisher Poor Http / Publisher: dispatch_table.py Poor Http / Publisher: metody aplikace Předchozí Celou kategorii (seriál)
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |