[php] Czy taki rodzaj logowania jest bezpieczny ?

0

Zrobilem system logowania w nastepujacy sposob:
Nazwa uzytkownika i haslo zostaje zapisane w bazie, z tymze haslo w postaci <ort>zachaszowanej </ort>funkcja paswd w mysqlu.
Uzytkownik logujacy podaje swoja nazwe i haslo, haslo zamieniane jest na postac <ort>zachaszoqwana </ort>i powownane z z "kodem" przy takim uzytkownuku w bazie. Jezeli sie zgadza zwraca jakby user_id, ktory ja okreslilem ze jest to <ort>zachaszowana </ort>nazwa uzytkownika i np jego wiek.
Czyli jesli mam osobe np.
Glina 24 lata
To user_id bedzie wygladal tak: passwd(glina_24).
Zabzpieczenie to ma na celu aby w pasku komend ktos "znajacy sie" nie wpisal wygenerowanego user_id.

I dalej przekazuje ten user_id po kolei wszedzie gdzie tylko klika "klient" jezeli gdzies poo drodze user_id zniknie powrot to logowania lub tez jezeli nie bedzie sie zgadzal z danym userem.

Oczywioscie nie trzeba przekazywac zawsze mozna go trzymac w sesji.

Jest to w miare bezpieczny system ?
Jak Wy to robicie?

0

I dalej przekazuje ten user_id po kolei wszedzie gdzie tylko klika "klient" jezeli gdzies poo drodze user_id zniknie powrot to logowania lub tez jezeli nie bedzie sie zgadzal z danym userem.

Może źle zrozumiałem . Ale skoro używasz funkcji jednokierunkowej aby uzyskać user_id z loginu i wieku , oraz tylko to id chcesz przesyłać między stronami to jak mając to id dowiesz się na innych stronach o innych danych użytkownika ( funkcja odwrotna nie do stworzenia ) . Przecież tego id nie będziesz trzymał w bazie . Jakoś zupełnie nie kapuje idei , ale ostatnio i tak mało kumaty jestem ;) .
Ja to robie tak :
logujemy się : podajemy login i haslo . Hasło przesyłamy jako argument do funkcji hashującej ( np : crypt ) i porównujemy z zahashowanym w bazie danych , dla użytkownika o tym samym loginie . Jeśli się zgadza to w sesji rejestrujemy zmienną : id_user - jest to id zalogowanego użytkownika . Każdy użytkownik w czasie utworzenia ma przypisywane takie id , jest to klucz główny tablicy z użytkownikami . Dzięki temu , że jest to klucz główny ( jest niepowtarzalny ) , wszystkie zapytania przez niego wywoływane są wykonywane szybciej . W gre wchodzi trzymanie tego id tylko i wyłącznie w sesji . Nikt nie może sobie na sztywno zmienić wartości tej zmiennej , bo plik z sesją trzymany jest na serwerze . Tylko skrypt na serwerze może ją zarejestrować i przyznać jej konkretną wartość , a może się to stać tylko i wyłącznie gdy podamy poprawne dane w trakcie logowania .
Bawie się PHP od niedawna , więc jakbym się mylił to mnie poprawcie .

0

Racja.
Lepiej zrobić logowanie na sesjach: zarejestrować w niej potrzebne zmienne i sprawdzać, czy są sesyjne, tak, aby nikt nie modyfikował ich w pasku adresu.

No i hashuj hasło :) md5()

0

Może źle zrozumiałem . Ale skoro używasz funkcji jednokierunkowej aby uzyskać user_id z loginu i wieku , oraz tylko to id chcesz przesyłać między stronami to jak mając to id dowiesz się na innych stronach o innych danych użytkownika ( funkcja odwrotna nie do stworzenia ) . Przecież tego id nie będziesz trzymał w bazie . Jakoś zupełnie nie kapuje idei , ale ostatnio i tak mało kumaty jestem ;) .

Tzn w bazie trzymam ID , login oraz user_id, ktory jest wtorzony i zapisywany do bazy i za kazdym razem przy kolejnych stronach sprawdzam czy taki user_id znajduje sie w bazie. Ale to jest tylko opcja na logowanie bez udzialu sesji.
Bo jezeli bierzemy pod uwage sesje faktycznie id uzytkownika mozna sobie schowac w sesji i koniec.
Jezeli chodzi o sesje to moj tok rozumowania jest taki sam jak Twoj.
login + haslo - > sprawdzam czy istnieje login dla tak schaszowanego hasla i rejestruje user_id w sesji jako ID uzytkownika i gra muzyka.
Dzieki !

1 użytkowników online, w tym zalogowanych: 0, gości: 1