Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cudze id sesji
Forum PHP.pl > Forum > PHP
ceiks
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
kszychu
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.
ceiks
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. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.