Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> cudze id sesji, problem z php session
ceiks
post 15.03.2006, 16:02:20
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.03.2006

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


Witam.

Mam problem z sesją php, na której opiera się moja witryna.

Podczas logowania do serwisu, zdarza się (losowo), że użytkownik zostaje zalogowany na cudze konto.

Przebieg procesu:

1. Odebranie danych z $_POST-a
2. Porównanie z bazą danych i ewentualne (w przypadku sukcesu), wyciągnięcie klucza dla rekordu usera z b.d.
3. Zapisanie klucza do tablicy $_SESSION.
4. Przerzucenie header()-em na stronę główną.

No i na stronie głównej okazuje się, że zalogowany jestem jako ktoś inny!!

Odrzucam, przez możliwie najróżniejsze próby sprawdzenia, i jako takie zaufanie do mySQL, błędne wyciągnięcie klucza z b.d.

Zakładam, że po przerzuceniu funkcją header(), na stronę główną dostaję cudzy - aktualnie używany - identyfikator sesji.

Uwagi dodatkowe:
1. header ma jako argument Location adres względny, żeby nie mieszać przechodzenia przez domeny.
2. W serwisie panuje ruch około 30 tyś wejść dziennie i problem (prawdopodobnie) nasila się przy wzmożonym ruchu.
3. Mam tylko kilka takich zgłoszeń dziennie, ale jeśli ktoś dostanie się na cudze konto - może bardzo namieszać.
4. Środowisko pracy: php 4.3.9 i mySQL 4.1.10, Linux

pozdrawiam wszystkich
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kszychu
post 15.03.2006, 16:18:06
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Aż niemożliwe, żeby wygenerowane przez apache'a identyfikatory sesji się pokryły i użytkownik odczytał czyjś plik sesji, ale może to właśnie to?...
POkaż jak uwierzytelniasz użytkownika.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
ceiks
post 15.03.2006, 16:39:35
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.03.2006

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


mniej więcej tak:
  1. <?php
  2.  
  3. $pytanie = 'SELECT gracze_lhe.ID_GRACZA
  4. FROM gracze_lhe
  5. WHERE gracze_lhe.LOGIN = "'.$_POST['login'].'" 
  6. AND gracze_lhe.HASLO = "'.$_POST['haslo'].'"';
  7.  
  8.  
  9. $dane = mysql_fetch_row(mysql_query($pytanie));
  10.  
  11. if ($dane[0] != '') {
  12.  
  13. $_SESSION['loginID'] = $dane[0];
  14. $_SESSION['loginName'] = $_POST['login'];
  15.  
  16. header("Location: index.php");
  17.  
  18. } else blad_logowania();
  19.  
  20. ?>
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:55