Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logowanie na bazie MySQL, a nie na sesjach - bezpieczne?
infoo1
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

Ostrzeżenie: (0%)
-----


Mam pomysł na zrobienie takiego logowania na bazie:
1. Nie ma sesji, ani cookies.
2. Struktura tabeli z sesjami:


Kod
+---------+------------+--------------+---------+------------+-------------+
| user_id | session_id | user_browser | user_ip | start_time | remember_me |
+---------+------------+--------------+---------+------------+-------------+


Objaśnienia:
  • user_id:
    id użytkownika z tabeli prefix_users
  • session_id:
    "sid". Planuję go przekazywać w adresie (index.php?mode=blablabla&sid=tu_sid). //W PHP była funkcja generująca sid. Jak się nazywała?
  • user_browser:
    $_SERVER['HTTP_USER_AGENT'];
  • user_ip:
    $_SERVER['REMOTE_ADDR'];
  • start_time:
    time(); przy logowaniu. W konfiguracji ustalam po jakim czasie ma wylogowywać (tabela prefix_config).
  • remember_me:
    auto-logowanie
3. Przy każdym odświeżeniu strony sprawdzam, czy zgadza się user_browser, user_ip, start_time, session_id.
4. Remember_me: działa, jeśli jest dozwolone w konfiguracji.
Pytania:
1. Czy to bezpieczne? Coś pominąłem?
2. Czy sprawdzać oprócz tego $_SERVER['X_FORWARDED_FOR']; //I czemu nie znalazłem tego w manualu?
3. Na ile powinienem ustawić domyślny czas trwania sesji (bo może być albo domyślny, albo na zawsze (remember_me może być 0 lub 1)).

Ten post edytował infoo1 12.12.2008, 22:05:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pest
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 15
Dołączył: 10.12.2007
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Więc cała ta zabawa ma na celu:
  1. przeniesienie miejsca przechowywania danych sesyjnych z pliku do bazy
  2. ograniczenie ilości zmiennych przechowywanych w sesji tylko do zmiennej user_id
  3. ograniczenie możliwości przesyłania zmiennej session_id tylko do parametru _GET
  4. dodanie dodatkowych informacji do sesji takich jak IP i USER_AGENT
Coś pominąłem ?

Podsumowując (bezpieczeństwo i użyteczność):
  1. - ani grzeje ani ziębi, jak ktoś tutaj już napisał, to tylko miejsce przechowywania
  2. - jeśli to ma służyć tylko do przechowywania id usera, a wszystkie jego zmienne byłyby wczytywane dopiero w kolejnym zapytaniu to w porównaniu do mechanizmu sesji są już 2 zapytania do bazy zamiast jednego odczytu pliku
  3. - po co ograniczać możliwość przesyłania session_id tylko do _GET, skoro sesja wbudowana w php może być przekazywana zarówno w _GET jak i _COOKIE (przy czym _COOKIE jest dużo bezpieczniejsze ze względu na brak identyfikatora w adresie)
  4. - niby fajny pomysł przy kradzieży session_id należałoby mieć też ten sam IP... niestety są użytkownicy w sieci co mają zmienne IP i może im się zmieniać kilka razy na zalogowanie, co do danych USER_AGENT, to już lepiej bo "nie szkodzi", ale też dużo nie pomaga, wystarczyłoby mieć tą samą przeglądarkę (wersję)
Go to the top of the page
+Quote Post

Posty w temacie
- infoo1   Logowanie na bazie MySQL, a nie na sesjach - bezpieczne?   12.12.2008, 22:05:07
- - Darti   A że tak zapytam, jakie są powody do rezygnowania ...   12.12.2008, 22:20:36
- - infoo1   1. 2 (i więcej) sesje się zlepiają w jedną, czyli ...   12.12.2008, 22:33:35
- - erix   Cytat1. 2 (i więcej) sesje się zlepiaj...   12.12.2008, 22:38:27
- - Darti   hmm ok, z Twojego rozwiązania wychodzi mi jedynie,...   12.12.2008, 22:46:12
- - infoo1   1. Nie, nie pograć. To program, nie gra. 2. Tu mog...   12.12.2008, 22:55:41
- - Darti   Ależ wszystko w porządku, sam nie polecam zachowyw...   12.12.2008, 23:10:11
- - infoo1   Nie do końca . Jeszcze jest $_SERVER['HTT...   12.12.2008, 23:16:28
- - Darti   IE nie przekazuje sesji między oknami (czy też FF ...   12.12.2008, 23:39:14
- - infoo1   0) Ale jak sprawdzam browsera, to pokaże coś inneg...   12.12.2008, 23:57:34
- - Darti   oj ... miałem na mysli dwa okna IE = dwie różne se...   13.12.2008, 00:07:25
- - infoo1   Cytatoj ... miałem na mysli dwa okna IE = dwie róż...   13.12.2008, 00:34:39
|- - Darti   Cytat(infoo1 @ 13.12.2008, 00:34:39 )...   13.12.2008, 00:41:57
- - infoo1   Cytatno i skąd bierzesz zmienne $sid, $u...   18.12.2008, 19:38:03
- - pest   Więc cała ta zabawa ma na celu:przeniesienie miejs...   19.12.2008, 08:58:41
- - ucho   Strasznie to wszystko skomplikowane - do podstawow...   19.12.2008, 11:14:00
- - infoo1   To rezygnuję z sid w linku. Cytat# ograniczenie i...   19.12.2008, 15:17:22
- - infoo1   Nie zawsze ma się dostęp do takich rzeczy Jedna...   19.12.2008, 16:39:34
- - Mize   Klasa User, u mnie jest modelem, a do obsługi mech...   19.12.2008, 17:00:18
- - infoo1   CytatKlasa User, u mnie jest modelem, a do obsługi...   19.12.2008, 17:03:29
- - Mize   Dużo by pisać. http://www.google.pl/search?q=php5...   19.12.2008, 17:13:42


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 22:14