Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie
Forum PHP.pl > Forum > Przedszkole
PawelC
Hej smile.gif
Zastanawia mnie jeden problem, związany z logowaniem i chodzeniem po stronie jako zalogowany. Ktoś kiedyś z tego forum podesłał mi skrypt logowania, i jego działanie było o tyle dziwne, że logowało wszystko bardzo dobrze, tylko problem był w momencie gdy się nie wylogował, i ktoś wszedł pod podany adres, to był zalogowany jako tamta osoba, jak to jest możliwe? Do logowania były użyte sesje.
piotrooo89
sesja nie została zniszczona po wylogowaniu?
PawelC
Jak się wylogował to było wszystko ok, ale dlaczego jak tego nie zrobił to ktoś uzyskał dostęp do jego konta, bez jakichkolwiek akcji?
piotrooo89
nie rozumiem? ten "ktoś" był na tym samym kompie? jak tak to sesja nie została poprawnie zniszczona. jeśli nie być może jest jakaś luka w zabezpieczeniu bazy danych przed SQL Injection.
PawelC
Jakiś czas temu testowałem ten skrypt i było coś takiego że się zalogowałem jako jakiś user i edytowałem profil sobie, i dałem link znajomemu, który wszedł na podaną przeze mnie stronę, i był zalogowany jako użytkownik na którego ja się logowałem? Zaznaczam że w momencie gdy on wchodził na stronę, ja byłem normalnie zalogowany bo edytowałem dane.

Cytat
nie rozumiem? ten "ktoś" był na tym samym kompie?

Nie był na innym kompie.

Czy nie filtrowanie danych podczas pobierania z bazy, może mieć w tym jakiś udział?
piotrooo89
może w adresie był jakiś token? nie wiem mało info podałeś.
PawelC
żadnego tokena nie było. Wkleje Ci kod skryptu:
logowanie.php
  1. <?php
  2. require 'config.php';
  3.  
  4. // kod do strony o nazwie logowanie.php
  5.  
  6. $log = trim($_POST['log']);
  7. $pass = trim($_POST['pass']);
  8. $loguj="select log,pass from users where log='$log' and pass='$pass'"; //pobranie z bazy loginu i hasła wpisanego w formularzy
  9. $rekordy = mysql_query($loguj);
  10. if(mysql_num_rows($rekordy)==0)// sprawdzenie czy dany użytkownik istnieje w bazie
  11. {
  12. echo' Podany login i hasło jest błędne'; // jeżeli nie istnieje taki użytkownik to wyświetla błąd
  13. }
  14. else
  15. {
  16. $_SESSION['zalogowany']=$log;
  17. echo '<a href="profil.php">Przejdz do panelu</a>';
  18. }
  19.  
  20. ?>
  21.  
  22. </div>

I kod strony po zalogowaniu, do której osoba z zewnątrze bez logowania miałem dostęp do konta, osoby która się nie wylogowała:
  1. <?php
  2. if(isset($_SESSION['zalogowany']))
  3. {
  4.  
  5. echo'Zalogowany jest: <strong><font color="red">'. $_SESSION['zalogowany'].'</strong></font> | Koniec pracy, możesz się wylogować:  <a href="wylogowanie.php"><strong><font color="red">Wyloguj się</font></strong></a><br />';
  6.  
  7. }
  8.  
  9.  
  10. else
  11. {
  12. echo "Brak uprawnień!";
  13. }
  14.  
  15. ?>

Zamiast session start było ob_flush() czy to może być przyczyną tego? ob_flush() służy do buforowania danych, a skrypt tego nie robił. Było tylko użyte aby pominąć problem z sesjami.
piotrooo89
IMO jak nie zastartowałeś sesji to Ci nie zatrybi. ale dziwna sprawa bo powinien błędem pluć. zastartuj sesje przez session_start(), i sobie przetestuj.
pawkow
W urlu była przesyłana zmienna SSID czy jakoś tak, dobrze myślę ?
PawelC
Nie była przesyłana w URL
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.