Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z logowaniem
Forum PHP.pl > Forum > PHP
barthek
mozliwe ze ja to zle rozumiem, ale coz.. sytuacja wyglada nastepujaco:

skrypt logowania dziala tak, ze jezeli ktos zaznaczyl opcje 'pamietaj mnie' to tworzone jest ciasteczko z danymi potrzebnymi do zalogowania:
  1. <?php
  2. $dane = ($login.$haslo);
  3. setcookie ("dane", $dane,time()+3600*24*365);
  4. ?>


nastepnym razem jak wejdziemy na strone skrypt sprawdza czy ma ustawione ciasteczko. jezeli ma to pobiera dane i probuje sie zalogowac:
  1. <?php
  2. if(isset($_COOKIE["dane"]))
  3. {
  4. $dane = $_COOKIE["dane"];
  5. $login = substr($dane, 0, 32);
  6. $haslo = substr($dane, -32);
  7. }
  8. ?>


i to wszystko mi dziala! smile.gif problem pojawia sie przy wylogowywaniu.. mianowicie skrypt wylogowujacy wyglada tak:
  1. <?php
  2. setcookie ("dane", "",time()-3600*24*365);
  3. unset($_SESSION['login']);
  4. unset($_SESSION['haslo']);
  5. header("location:../index.php");
  6. ?>


dodam jeszcze ze w index.php na poczatku jest wlasnie includowany kod probujacy sie zalogowac poprzez dane uzyskane z ciasteczka..

problem jest tej natury, ze po nacisnieciu wyloguj i przekierowaniu do index.php automatycznie znowu mi sie loguje (pobierajac dane z ciasteczka), mimo ze przeciez teoretycznie cisteczko stracilo waznosc.. jezeli nie zaznacze opcji 'pamietaj mnie', czyli ciasteczka w ogole nie ma to wylogowywanie przebiega bezporblemowo..

jakies pomysly co tu jest nie tak?
z gory dziekuje..

edit: JEZELI NIE WIDZICIE TU BLEDU TOPOWIEDZCIE PRZYNAJMNIEJ JAK WY TAKIE RZECZY ROZWIAZUJECIE..
Neotion
hymhym... Uzywasz $_SESSION do pobierania danych z ciasteczek?

Tak sie chyba nie robi, może się mylę.

Do danych z ciasteczek używa się $_COOKIE

i tak:
  1. // Zapamietanie:
  2. <?php
  3. $dane = $login.'<jakistamseparator>'.$haslo; // Proponuje dać jakiś dziki znak ASCII jako separator, unikalny żeby nie było pom
    yłek
  4. setcookie ("dane", $dane,time()+3600*24*365);
  5. ?>
  6.  
  7. // Pozniejsze logowanie
  8. <?php
  9. if($_COOKIE['dane']) 
  10. {
  11. $cookieDane = explode('<jakistamseparator>',$_COOKIE['dane']);
  12. $login = $cookieDane[0];
  13. $haslo = $cookieDane[1];
  14. }
  15. ?>


Pomogłem czy powiedziałem tylko to co juz wiedziałeś tongue.gif ?
Termit_
Z tym, że gorąco zalecam dodatkowe hashowanie hasła wysyłanego w ciasteczko, bo po przechwyceniu ciastka (a przecież może się to zdarzyć) może być 'zonk'...
Np. jeśli hasło było zakodowane md5, to dodaj do tego jeszcze hashowanie sha1.
Neotion
Co do hashowania wolałbym jakąś własną funkcję od hashowania bo SHA1 i MD5 z tego co czytałem nie są już za bardzo bezpieczne. Obecnie chyba tylko AES został, ale nie ma do niego gotowej funkcji w php sad.gif
barthek
Cytat(Neotion @ 2006-02-19 22:10:43)
hymhym... Uzywasz $_SESSION do pobierania danych z ciasteczek?

nie no jasne ze nie smile.gif po prostu pozno posta dawalem i przez pomylke nie ta czesc kodu dalem..

co do tego problemu to juz go rozwiazalem - plik logout.php, ktory zawieral skrypt wylogowujacy, byl w innym katalogu niz index.php przez co nie potrafil zmienic daty waznosci ciasteczka smile.gif

Cytat(Termit_ @ 2006-02-19 22:32:04)
Z tym, że gorąco zalecam dodatkowe hashowanie hasła wysyłanego w ciasteczko, bo po przechwyceniu ciastka (a przecież może się to zdarzyć) może być 'zonk'...
Np. jeśli hasło było zakodowane md5, to dodaj do tego jeszcze hashowanie sha1.


taa... probowalem dane w ciasteczku XOR'owac unikalnym kulczem 64-znakowym, ale o ile wszystko niby dziala (jak sprawdzalem w osobnym kodzie php instrukcja pod instrukcja), to juz przy kodowaniu ciasteczka i pozniejszym jego odczytaniu w pewnym momencie zle to dzialalo (np pierwsze 50 znakow bylo OK, a pozostale 14 juz bral z kosmosu..).
postanowilem wiec to zostawic.. dlaczego? poniewaz co da komus zhashowany md5 login i haslo? jak wklepie to w formularz to zostanie to ponownie zhashowane i tyle mial hasla smile.gif

mam natomiast jeszcze jedno pytanie. teraz jezeli ktos mi sie wylogowuje (a wczesniej dal opcje 'pamietaj mnie') to usuwa ciasteczko - przez co juz go pamietac nie bedziemy smile.gif jak wiec zrobic, zeby po wylogowaniu sie - uzytkownik mogl sobie przegladac jeszcze strony witryny normalnie jako gosc, a po zamknieciu przegladarki i ponownym powrocie byl logowany automatycznie, czyli pamietany?
Neotion
Użyj sesji. Sesja jest usuwana czy już nie pamiętana po wyjściu z przeglądarki. Ja tak zawsze robie przy licznikach unikanych odwiedzin smile.gif

A co do MD5: jak komuś zależy to z tego co słyszałem idzie sobie z tym poradzić.
andrzejb
Cytat(Neotion @ 2006-02-20 10:06:55)
A co do MD5: jak komuś zależy to z tego co słyszałem idzie sobie z tym poradzić.

demagogia, nie sluchajcie go smile.gif szkoda ze tylko slyszales ;>
Neotion
http://hacking.pl/5450 <- to o SHA1
http://www.hakin9.org/pl/attachments/md5_pl.pdf <- to o MD5

Ale to tylko o tworzeniu kolizji, nie odczytamy raczej z MD5 pierwotnej informacji.
Zwracam honor winksmiley.jpg
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.