Jakub L.

Jakub L. Programista

Temat: logika logowania

Paweł Makowski:
Pytanie - po co dane typu ip , session_life itp. chcecie gromadzić w bazie czy cache?
Czemu nie zapisujecie ich w sesjach ? Wiadomo że dane z cookie da się poznać/zmienić
ale danych z sesji już nie. Tak więc dla danego SID zapisując $_SESSION['ip'] ,['agent'], ['life'] dostajemy ten sam poziom bezpieczeństwa co w przypadku zapisu tych danych w db z tą różnicą że zyskujemy na wydajności. Co wy o tym myślicie ?

Ja się zastanawiam gdzie według ciebie ląduje zawartość tablicy $_SESSION pomiędzy requestami.
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: logika logowania

Jakub L.:

Ja się zastanawiam gdzie według ciebie ląduje zawartość tablicy $_SESSION pomiędzy requestami.

W php pod apachem w katalogu tmp albo innym w konfiguracji ustawionym do przechowywania sesji. W standardowych konfiguracjach dane zapisywane są w plikach, ale nic nie stoi na przeszkodzie żeby zastosować własne mechanizmy sesji. Wtedy dane możesz zapisywać w bazach relacyjnych, w bazach key=>value, w mcache itd :D od koloru do wyboru.Jarosław Czub edytował(a) ten post dnia 29.09.10 o godzinie 20:39
Jakub L.

Jakub L. Programista

Temat: logika logowania

Nieno, ja wiem jak się zapisuje sesje, tylko czasem zastanawia mnie wiara w magiczność - ładuję w $_SESSION i to jest lepiej niż jakbył ładował do bazy/pliku/memcached/whatevera, podczas gdy może być tak samo, albo i gorzej, właśnie zależnie od konfiguracji.
Podobnie jest z ciastkami i sesją - sesje != ciastak - bez ciastka sesję można podtrzymać tylko wykonując jakieś łamańce typu przekazywanie id sesji w urlu lub w jakichś ukrytych polach, tylko że bezpieczeństwo czegoś takiego jest słabsze, a uzasadnienie bardzo skomplikowane.

konto usunięte

Temat: logika logowania

Co do pierwszego - tu nie chodzi o magiczność tylko czas i najprawdopodobniej wydajność -
jeśli sesje zapewniają cachowanie po co ktoś chce rozpoczynać sesję po czym dane ładować do własnego cache ? Strata czasu + pytanie o wydajność jego klasy. Co do trzymania sesji w bazie to kolejny dziwny pomysł , opcja nie daje wcale nowego zabezpieczenia, może nawet je stworzyć + zbędne obciążenie db i strony...
Podobnie jest z ciastkami i sesją - sesje != ciastak - bez ciastka sesję można podtrzymać
tylko wykonując jakieś łamańce typu przekazywanie id sesji w urlu

Ale standardowo w ciasteczku jest tylko SID a nie wszystkie zapisane dane typu ip, agent , user_id itd.Paweł Makowski edytował(a) ten post dnia 30.09.10 o godzinie 09:49
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: logika logowania

Paweł Makowski:
Co do pierwszego - tu nie chodzi o magiczność tylko czas i najprawdopodobniej wydajność -
jeśli sesje zapewniają cachowanie po co ktoś chce rozpoczynać sesję po czym dane ładować do własnego cache ? Strata czasu + pytanie o wydajność jego klasy. Co do trzymania sesji w bazie to kolejny dziwny pomysł , opcja nie daje wcale nowego zabezpieczenia, może nawet je stworzyć + zbędne obciążenie db i strony...
Podobnie jest z ciastkami i sesją - sesje != ciastak - bez ciastka sesję można podtrzymać
tylko wykonując jakieś łamańce typu przekazywanie id sesji w urlu

Ale standardowo w ciasteczku jest tylko SID a nie wszystkie zapisane dane typu ip, agent , user_id itd.Paweł Makowski edytował(a) ten post dnia 30.09.10 o godzinie 09:49

Sesja w bazie ją obciąży, ale śmiem twierdzić, że dostęp do bazy danych jest szybszy niż do plików zgromadzonych na lokalnym dysku (cache bazy danych oraz tabele trzymane w pamięci). Co więcej przetrzymywanie danych sesji ma pewne zalety - mamy większą kontrolę. Można np. uniemożliwić zalogowanie się na to samo konto, gdy już ktoś jest na nie zalogowany. Sposób przechowywania danych sesyjnych moim zdaniem jest kwestią tylko potrzeb danego projektu...
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: logika logowania

Paweł Makowski:
pytanie o wydajność jego klasy. Co do trzymania sesji w bazie to kolejny dziwny pomysł , opcja nie daje wcale nowego

Trzymanie sesji w bazie to nie 'dziwny pomysł', tylko jeden ze sposobów utrwalania sesji w środowiskach klastrowych :)
http://download.oracle.com/docs/cd/E15051_01/wls/docs1...
http://download.oracle.com/docs/cd/E15051_01/wls/docs1...
Jakub L.

Jakub L. Programista

Temat: logika logowania

Paweł Makowski:
Co do pierwszego - tu nie chodzi o magiczność tylko czas i najprawdopodobniej wydajność -
jeśli sesje zapewniają cachowanie po co ktoś chce rozpoczynać sesję po czym dane ładować do własnego cache ? Strata czasu +

Zadanie pytania: to jak sesje zapewniają cache byłoby okrutne, prawda? :)
Michał Jastrzębski

Michał Jastrzębski Django-fu, phpjutsu,
sql-do

Temat: logika logowania

Ja często zapisuję user agent jak się człek zaloguje i sprawdzam przy każdym requescie. Jak się nie zgadza to wylogowuję. Nie jest to trudne do złamania ale zawsze trochę utrudnia kradzież sesji. Jeśli nie chcesz być tak restrykcyjny możesz napisać jakiś sprytny skrypt który wynajduje różnorodnośc ip. Na przykład w pierwszych 2 blokach. Wtedy, jeśli to dobrze zrobisz, to użytkownik neo nie będzie wylogowywany po zmianie ip, ale jak jakiś hacker od innego isp zapragnie zrobić session forgery to mu wywali. Możesz napisać jakiś fajny skrypt wykrywający nienaturalny ruch na stronie. Np. mało prawdopodobne, by ktoś bezpośrednio z jednego miejsca przeskoczył do zupełnie innego niepodlinkowanego pomiędzy...

Pomysły można mnożyć. Każdy następny utrudni trochę używanie strony, ale i session forgery. Grunt to znaleźć odpowiedni balans między tymi dwoma.



Wyślij zaproszenie do