Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesie + logowanie + remember
Forum PHP.pl > Forum > PHP
ziomek_1982
Witam
Mam taki problem.
Probowalem zrobic logowanie na sessiach i wyszlo dziala bez problemu.
Chcialem jeszcze do tego dodac opcje zapamietaj mnie i tu sie robi problem

Moglby mi ktos krotko dac przyklad takiego logowania albo jakos chociaz nakierowac bo juz nie mam na to pomyslow


Z gory dzieki!
Kinool
chcesz zrobic tak by naspenej wizycie na stronie byc zalogowanym taa??

jesli tak to ciesteczka sie klaniaja smile.gif

wysylasz ciasteczko z zakodowanych haslem oraz identyfikatorem przy wizycie sprawdzasz czy ciastko istnieje i czy posiada poprawne informacje jesli takto przeprowadzasz proces autoryzacji bez udzialu usera smile.gif
ziomek_1982
Udalo mi się zarobić coś takiego (nie wiem czy dobrze ale działa)


Możecie ocenić i powiedzieć na ile to jest bezpieczne i jesli zle to co poprawiec?


  1. <?php
  2.  if (isset($_COOKIE['login']) && isset($_COOKIE['pass']) || isset($_POST['login']) && isset($_POST['pass']))
  3. {
  4.  $_POST['pass'] = md5($_POST['pass']);
  5.  
  6.  if (isset($_COOKIE['login']) && isset($_COOKIE['pass']))
  7. {
  8.  $_POST['login'] = $_COOKIE['login'];
  9.  $_POST['pass'] = $_COOKIE['pass'];
  10. }
  11.  
  12.  $query = "SELECT * FROM users WHERE login='".$_POST['login']."' AND pass='".$_POST['pass']."'";
  13.  $result = mysql_query($query);
  14.  
  15.  if (mysql_num_rows($result) <> "0")
  16. {
  17.  $r = mysql_fetch_array($result);
  18.  
  19.  if ($_POST['remember'] == "1")
  20. {
  21.  setcookie("login", $r['login'], time() + 86400 * 30);
  22.  setcookie("pass", $r['pass'], time() + 86400 * 30);
  23. }
  24. else
  25. {
  26.  setcookie("login", $r['login']);
  27.  setcookie("pass", $r['pass']);
  28. }
  29.  
  30.  echo "jestem zalogowany<br><a href="logout.php">logout</a>";
  31.  
  32. }
  33. else
  34. {
  35.  $error = "<br><font color="#FF0000"><b>Błędny login i / lub hasło!</b></font>";
  36.  formularz_logowania($error);
  37. }
  38. }
  39. else
  40. {
  41.  formularz_logowania($error);
  42. }
  43. ?>
karolski
do ciasteczek wrzuc tylko id uzytkownika, wystarczy
ziomek_1982
Ale ogolnie nie ma bledow?
karolski
chyab jest ok, mozeze zmienne bys mogl na proste pozamieniac ja osobiscie nei lubie powtarzac $_POST['..... a jak juz przy tym to mozesz pozmieniac na nowe standardy $HTTP_POST_VARS['zmienna'] i $HTTP_SESSION_VARS['zmienna'] a reszta chyba nice
nospor
masz powazny blad. dane z posta do zapytania wkladasz tak: $_POST['login']. Wystraczy ze ktos w loginie wpisze apostrofy lub inne bzdury i w najlepszym przypadku zapytanie ci sie posypie. W najgorszym - ktos ci moze w bazie narozrabiac. przed wlozeniem do zapytania dane powinienes przeposcic chociazby przez cos takiego: mysql_escape_string(htmlspecialchars($_POST['login']))

A ogolnie to przeczytaj se to:
http://forum.php.pl/index.php?showtopic=23258
Kinool
Cytat(karolski @ 2005-11-08 16:15:28)
do ciasteczek wrzuc tylko id uzytkownika, wystarczy

samo id nic ci nie da! jak uwiezytelisz usera? na podstawie czego?? jego identyfikatora?questionmark.gif smeichu warte! wtedy wpisze sobie w ciacho ID dowolnego usera i bede zalogowany na jego koncie tak?!?!?!
Spirit86
Cytat(Kinool @ 2005-11-08 15:45:03)
Cytat(karolski @ 2005-11-08 16:15:28)
do ciasteczek wrzuc tylko id uzytkownika, wystarczy

samo id nic ci nie da! jak uwiezytelisz usera? na podstawie czego?? jego identyfikatora?questionmark.gif smeichu warte! wtedy wpisze sobie w ciacho ID dowolnego usera i bede zalogowany na jego koncie tak?!?!?!

masz całkowitą rację, dane dot. hasła, szczególnie jak są zakodowane w md5 są praktycznie nie do rozszyfrowania. Więc nie ma się czym przejmować.


Swoją drogą: sesi, może tongue.gif
karolski
bzdura nie wejdziesz an konto zmieniajac id uzytkonika na kogos innego bo jest jeszcze cos takiego jak id sesji ktore jest szyfrowane klucze, 128 bitowym -> powodzenia


"hasła md5 są praktycznie nie do rozszyfrowania"

są do rozszyfrowania do 7 znakow rozszyfruje ci w 15 minut, a wiecej tez się da tylko czasu troszke wiecej wiec powodzenai z dawaniem hasla do cookie ;]
Kinool
Cytat(karolski @ 2005-11-08 23:04:25)
bzdura nie wejdziesz an konto zmieniajac id uzytkonika na kogos innego bo jest jeszcze cos takiego jak id sesji ktore jest szyfrowane klucze, 128 bitowym -> powodzenia


"hasła md5 są praktycznie nie do rozszyfrowania"

są do rozszyfrowania do 7 znakow rozszyfruje ci w 15 minut, a wiecej tez się da tylko czasu troszke wiecej wiec powodzenai z dawaniem hasla do cookie ;]

nie wiem czy wiesz jak dzialaja sesje, jesli wylaczysz i wlaczysz przegladarke a potem ponownie wejdziesz na strone masz juz zupelnie inny identyfikator a cos takiego zachodzi gdy chesz byc zalogowany na stronie bez "recznego logowania" (przyklad forum) wiec aby doszlo do uwiezytelnienia musisz miec id i haslo usera, tzrba byc szalencem albo idiota aby trzymac haslo w jawnej formie! ale mniejsza juz o to

hasz md5 jak i inne hasze nie sa do "rozszyfrowania" a to z prostego powodu ze nie sa szyframi! tylko funkcajmi skrótu

BZDURA mozna nazwac wypoweidz typu:
Cytat
do ciasteczek wrzuc tylko id uzytkownika, wystarczy
do czego to wystarczy?? do zalogowania? uwiezytelnienia?? bo nie rozumie twojej bzdurnej wypowiedzi!
karolski
wes co ty wiesz, zoabcz sobei na strukture cookie, albo poprostu sproboj zalogować się na innego uzytkownika np na www.team-pentagram.pl

ale masz pojecie o kryptografii daj mi prosty hash w md5 do 7 znakow to ci go rozszyfruje
Kinool
jak juz wspomialem to nie rozszyfrujesz a znajdziesz kolizje panie kryptografie a tak na marginesie to istnieje nieskonczona liczba kolizji (podstawy matematyki) problem tylko z ich znalezieniem.

piszac o znalezieniu kolizji malych ciagow to ameryki nie odkryles!

co ma budowa ciastaka do przechowywania w nim haszu md5 czy innego?

ale jeszcze nie odpowiedziales mi na pytanie, w jaki sposob
Cytat
do ciasteczek wrzuc tylko id uzytkownika, wystarczy
to wystarczy do uwiezytelnienia??
karolski
oczym ty do mnie rozmawiasz ;]

hasla uzytkonikow sa przewaznie ok 7 znakow wiec rozszyfrowanie takiego hasla to jest 15 minut, jak nie wiezysz to daj mi hash to ci podam co to za haslo

tak wystarczy login albo id do ciasteczka, mistrzu tak jak wczesniej pisales to zmien w ciasteczku login albo id na inne i sporoboj sie zalogowac ;]
Kinool
Cytat(karolski @ 2005-11-09 11:16:37)
tak wystarczy login albo id do ciasteczka, mistrzu tak jak wczesniej pisales to zmien w ciasteczku login albo id na inne i sporoboj sie zalogowac ;]

do czego to wystarczy aby sie zalogowac?questionmark.gif zobacz sobie na ciasto tego forum albo innego gdzie masz mozliwosc "zapamietywania"

jesli ty robisz systemy uwiezytelniajace na podstawie samego logiunu albo ID to gratulacje dla ciebie i twoich klientow

a co do haszu to prosze ea78498fbd4e111d3a28eb6cd58c4148 czekam 15 mint smile.gif
Method
czy 15 minut juz minelo bo chcialbym zobaczyc odpowiedz biggrin.gif
nospor
Cytat
czy 15 minut juz minelo bo chcialbym zobaczyc odpowiedz
Jeszcze jedna taka genialna wypowiedź a posypią się ostrzeżenia. Przecież karolskiego moze nie byc akurat na forum i nic nie wie ze juz ma dzialac.
matid
Cytat(karolski @ 2005-11-09 11:16:37)
hasla uzytkonikow sa przewaznie ok 7 znakow wiec rozszyfrowanie takiego hasla to jest 15 minut, jak nie wiezysz to daj mi hash to ci podam co to za haslo

Kolega dalej mili pojęcia. md5 to hash, funkcja skrótu, ona nie szyfruje, więc nie można jej rozszyfrować! Jak już ktoś wspomniał - jedyne co możesz zrobić, to znaleźć kolizję, czyli ciąg znaków, który generuje ten sam hash, a jak wiadomo istnieje nieskończenie wiele ciągów dających ten sam hash.
Gdyby md5 dało się 'rozszyfrować' byłby to najlepszy możliwy algorytm kompresji - niezależnie od ilości danych po kompresji zajmowały by one 32 bajty. Absurd.

I proszę sobie przyjąć do wiadomości, że też się możesz mylić.
karolski
ea78498fbd4e111d3a28eb6cd58c4148 <notfound> hex:<notfound>

dales jaksi hash za dlugi albo bledny, najlepiej daj do 7 znakow bo nie chce mi sie szukac nastepnej maszyny ktora to rozszyfrowuje

a to do matiego i innych niedowiarkow:

Łamanie hashy jest oparte na specjalnych tablicach, dzięki którym można łamać hasła(?) do długości 7 znaków zawierające małe litery i cyfry(([0-9a-z]{7})).
mike
Temat był już podejmowany nie raz, jeśli ktoś chce coś dodać w temacie łamania i "odszyfrowywania" haszy to polecem odszukac odpowiednie wątki i pisać tam.

Za kolejny wpis o haszowaniu w tym wątku zamknę go.
Bo to zwykły OT jest tongue.gif
Kinool
do autora tematy: czy juz sobie poradziles?? bo zrobilismy spory OT (jak wspomnial mike_mech) smile.gif jak nie to pisz z czym masz problemy jeszcze

@karolski ciag jest 7 znakowy (cos twoja 15 minut zawodzi) smile.gif
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.