![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 3.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pytanie do osób, które stworzyły już wiele serwisów, na które użytkownik musi się zalogować. Co jest lepsze - przechowywanie w sesji loginu i hasła użytkownika i sprawdzanie ich poprawności po każdym wejściu na jakąkolwiek stronę serwisu (poprzez połączenie się z bazą) czy może lepiej po poprawnym zalogowaniu użytkownika ustawić jakąś zmienną "logowanie" na 1 i sprawdzanie jej wartości na każdej kolejnej stronie czy użytkownik jest zalogowany?
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 197 Pomógł: 0 Dołączył: 9.09.2003 Skąd: z Marsa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Witam, mam pytanie do osób, które stworzyły już wiele serwisów, na które użytkownik musi się zalogować. Co jest lepsze - przechowywanie w sesji loginu i hasła użytkownika i sprawdzanie ich poprawności po każdym wejściu na jakąkolwiek stronę serwisu (poprzez połączenie się z bazą) czy może lepiej po poprawnym zalogowaniu użytkownika ustawić jakąś zmienną "logowanie" na 1 i sprawdzanie jej wartości na każdej kolejnej stronie czy użytkownik jest zalogowany?
Myśle że sam sobie odpowiedziałeś na pytanie. Zastanów się co jest szybsze? Ustawianie 2 zmiennych i łączenie sie z bazą na każdej podstronie. czy ustawienie 1 zmiennej i sprawdzanie tylko czy ma wartosc 1 czy 0 ![]() Pozdro |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
pytanie tylko co jest bezpieczniejsze :?:
moim zdaniem lepszy jest pierwszy sposób, ponieważ jest dużo bezpieczniejszy.... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Czasem trzeba pójść na kompromis pomiędzy szybkością działania skryptu a bezpieczeństwem. Rozumiem, gdyby drugi sposób był dużo bardziej niebezpieczny od pierwszego, ale ciężko jest podszyć się i zmienić dane sesji...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
ale czy to sprawdzenie faktycznie trwa tak dlugo :?:
w moim cms'ie nie dluzej niz 0,12 sek (4 pomiary) |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat pytanie tylko co jest bezpieczniejsze :?:
moim zdaniem lepszy jest pierwszy sposób, ponieważ jest dużo bezpieczniejszy.... Nie jest. Jezeli ktos przejmie sesje to przeciez przejmie login i haslo zapsiane w niej. To samo tyczy sie przejecia sesje ze zmienna z informacja o zalogowaniu. Reasumujac: oba rozwiazania sa tak samo bezpieczne, ale to pierwsze jest poprostu nie potrzbne, malo eleganckie i malo wydajne. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 3.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
thx...
Seth takiego podsumowania oczekiwałem ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat moim zdaniem lepszy jest pierwszy sposób, ponieważ jest dużo bezpieczniejszy....
Jezeli ktos przejmie sesje to przeciez przejmie login i haslo zapsiane w niej. To samo tyczy sie przejecia sesje ze zmienna z informacja o zalogowaniu. Reasumujac: oba rozwiazania sa tak samo bezpieczne, ale to pierwsze jest poprostu nie potrzbne, malo eleganckie i malo wydajne. Oczywiscie pamietajac o odpowiednim ustawieniu register_globals zeby nie dac szans cfaniaczkom probujacym napdisac sesje tak login.php?Zalogowany=1 Moze ciezko zgadnac to przy zamknietych projektach ale jesli otworzysz kod to mozesz sie spodziewac przykrych niespodzianek (np. Twoj nowy CMS na hostingu z register_globals=Off) Mowie to bo jeszcze wiele serwerow ma wlaczone register_globals Jesli przechowujesz haslo zahaszowane md5 (a raczej powinno sie tak robic) to wydaje mi sie ze pierwsza metoda jest mimo wszystko bezpieczniejsza (raczej nic nie da podpatrzenie hasla tzn 'haszy') A co do wydajnosci? Jesli uzywasz persistent connections, haslo mozesz przekazywac na wypadek rozlaczenia. Jesli uzywasz polaczen stalych i tak musisz sie polaczyc za kazdym przeladowaniem skryptu. Tak wiec nie wydaje mi sie ze przechowywanie hasla w sesji jest mniej wydajne Seth -------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat "]Oczywiscie pamietajac o odpowiednim ustawieniu register_globals zeby nie dac szans cfaniaczkom probujacym napdisac sesje tak login.php?Zalogowany=1
a jeśli sprawdzam sesję przez [php:1:b484e17cd0]<?php if (session_is_registered("nazwa")){} ?>[/php:1:b484e17cd0] lub [php:1:b484e17cd0]<?php if ($_SESSION['nazwa']){} ?>[/php:1:b484e17cd0] ... to też muszę wyłączyć globale? -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat a jeśli sprawdzam sesję przez
[php:1:99eae6ff9a]<?php if (session_is_registered("nazwa")){} ?>[/php:1:99eae6ff9a] lub [php:1:99eae6ff9a]<?php if ($_SESSION['nazwa']){} ?>[/php:1:99eae6ff9a] ... to też muszę wyłączyć globale? Nie, tablice superglobalne (_SESSION, _COOKIE, _GET, _POST) tworzone sa niezaleznie od register_globals -------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Ale za to trzymasz w sesji dwie zmienne tekstowe (login i hasło) zamiast jednego inta userID. Jeśłi user nie jest zalogowany, userID trzyma 0 lub jakiś inny ID zdefiniowany w bazie dla Gościa. Za każdym razem pytasz bazę czy login i hasło pasują... potem updatujesz tabelę "last-visit".. a tak tylko update ID pobranego z sesji...
Jakoś trzymanie hasła i loginu niezbyt mi się podoba. -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale za to trzymasz w sesji dwie zmienne tekstowe (login i hasło) zamiast jednego inta userID. Jeśłi user nie jest zalogowany, userID trzyma 0 lub jakiś inny ID zdefiniowany w bazie dla Gościa. Za każdym razem pytasz bazę czy login i hasło pasują... potem updatujesz tabelę "last-visit".. a tak tylko update ID pobranego z sesji...
Jakoś trzymanie hasła i loginu niezbyt mi się podoba. ok, czesciowo to jest racja, ale przypuscmy ze pracujesz nad projektem i otwierasz zrodla. kazdy widzi jak sie nazywa zmienna sesyjna (moze zajrzec w zrodla) napewno trafi sie hosting ktory bedzie obslugiwal nasz system (powiedzmy CMS) i bedzie mial wlaczone globale ? (mozna sobie przypomniec nazwe zmiennej i nadpisac sesje) tylko co do tego mam zastrzezenia, w reszcie sie zgadzam Ps. Reasumujac: Upublicznienie kodow zrodlowych spowoduje wyciek danych z systemu - Podsekretarz Stanu w Ministerstwie Edukacji Narodowej i Sportu Hanna Kuzińska To bylo juz dawno temu ale jeszcze mnie smieszy i na dodatek ma zwiazek z biezacym postem ;-D -------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
[php:1:2eadfe341e]<?php
// config.inc.php $arrConfig['token'] = 'put_short_text_without_spaces_here'; ?>[/php:1:2eadfe341e][php:1:2eadfe341e]<?php // index.php echo $_SESSION[$arrConfig['token'].'_userID']; ?>[/php:1:2eadfe341e] Oczywiście możńa to zamknac w małą fukcję/metodę:[php:1:2eadfe341e]<?php function ReadGlobal( $strGlobalName, $strKey) { $strGlobalName= '_'.$strGlobalName; return $$strGlobal[$arrConfig['token'].$strKey]; } $intUserID = ReadGlobal( 'SESSION', '_userID' ) ?>[/php:1:2eadfe341e]Instalująć klientowi sam wpisujesz dowolny token, a jak instaluje sobie sam, to wystarczy dać warning w manualu, zę jest to zalecane. -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Instalująć klientowi sam wpisujesz dowolny token, a jak instaluje sobie sam, to wystarczy dać warning w manualu, zę jest to zalecane.
Tak masz racje, ale czy to nie jest bardziej 'skomplikowane' od przechowywania dwoch zmiennych w sesji (login i md5(password))? ;-) No chyba ze rozmawiamy o maksymalnym odciazeniu bazy z zbednych zapytan (wtedy ma to rzeczywiscie sens i zgadzam sie w 100%), a nie o bezpieczenstwie przechowywania zmiennych w sesji. -------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Myślałem o odciążeniu bazy. Dodatkowo dany token można wykorzyustać do innych rzeczy, np. do szyfrowania zserializoweanej sesji, czy czegoś innego.
Oczywiście jest jeszcze jeden motyw: handler sesji w bazie ![]() -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ps. Przetestowalem przed chwila, ze nawet przy wlaczonym register_globals
index.php?asshole=asdsasd nie nadpisze zmiennej sesyjnej _SESSION['asshole'] Hmm dziwne a wydawalo mi sie ze powinna nadpisac, bylem tego pewny :( Masz racje -------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 151 Pomógł: 0 Dołączył: 4.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ok jedna sprawa zamknieta, a co doradzisz w takiej sprawie ?
-------------------- Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn< |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 13:33 |