ďťż

[PHP] Machanizm autologowania- jak rozwiązać?

       

Podstrony


telcocafe

Witam,

mam stronę, na której można się rejestrować i logować. Chciałbym wprowadzić udogodnienie polegające na autologowaniu. Tylko, że nie bardzo wiem jak je rozwiązać. Rozumiem, że muszę wykorzystać ciastko, ale co mam w nim przechowywać? Podejrzewam, że nie login i hasło.

Jak powinien wyglądać dobry algorytm autologowania?

Pozdrawiam.



po prostu nie usuwaj ciacha świadczącego o tym, że user jest zalogowany (ustaw mu ważność np. na 20 lat)


po prostu nie usuwaj ciacha świadczącego o tym, że user jest zalogowany (ustaw mu ważność np. na 20 lat)
W ten sposób wystarczy spreparowac taki plik i jesteśmy zalogowani.

Najlepiej zapisać id uzytkownika i jego hasło(odpowiednio zaszyfrowane, a nie bezpośrednio pobrane z bazy). Ja ustawiam też czasem IP(kilka razy hashowane md5) i w ten sposób bardzo utrudniam jakiekolwiek przechwycenie konta. IMHO najlepiej zapisywać wszystko w jednym ciasteczku, a później odpowiednio rozdzielać, przez co trudniej potencjalnemu włamywaczowi dojść co jest czym.
Użytkownik kiperoman edytował ten post 15 wrzesień 2007, 15:06

W ten sposób wystarczy spreparowac taki plik i jesteśmy zalogowani.
To chyba oczywiste, ze nie bedziesz trzymal ciasteczka "ustaw_tutaj_jedynke_zeby_byc_zalogowanym"... 




Ja ustawiam też czasem IP(kilka razy hashowane md5) i w ten sposób bardzo utrudniam jakiekolwiek przechwycenie konta

Mam jedno pytanie. załóżmy, że mam:
$haslo = 'haslo'; $hash = md5($haslo); $hash_xl = md5($hash); $hash_xxl = md5($hash_xl);
to ma jakiś sens? Lepiej zabezpiecza wtedy?

wielokrotne maglowanie nie zwieksza sily dzialania algorytmu.... taka jest jedna z zasad kryptologii :D

jedyny wyjatek stanowi "plotek" lub inne podobne pseudo-metody ;)


Mam jedno pytanie. załóżmy, że mam:
$haslo = 'haslo'; $hash = md5($haslo); $hash_xl = md5($hash); $hash_xxl = md5($hash_xl);
to ma jakiś sens? Lepiej zabezpiecza wtedy?


utrudnia, a wręcz uniemożliwia, zabawę z tęczowymi tablicami

@bryn - rozwiniesz trochę ? Ponieważ widzę tu dwie sprzeczne wypowiedzi i chętnie się dowiem czegoś więcej :P

Nie nazwałbym ich sprzecznymi :P siła algorytmu nie jest tutaj zwiększana, bo tak czy inaczej md5 to szyfrowanie jednostronne (tego, co zaszyfrowano, nie da się odszyfrować). Kilkakrotne zaszyfrowanie utrudnia bruteforcing (po jednokrotnym zaszyfrowaniu mamy do odstrzału ciąg znaków o długości hasła, nazwimy to n - mamy 36^n możliwości do sprawdzenia; przy dwóch szyfrowaniach musimy zbrutować wcześniej pierwszy klucz, czyli 36^n+36^32 możliwości; po trzech szyfrowaniach to już 36^n+2*36^32 itd.).
Tęczowe tablice to imho odmiana bruteforca, która zamiast wykorzystywać moc obliczeniową, wykorzystuje pamięć.

(a przynajmniej tak mi się wydaje ; )

edit: oczywiście jeżeli wiemy ile razy atakowana osoba przeleciała hasło md5, to przy brutowaniu tradycyjnym to nie ma znaczenia - ale jeśli chcemy wykorzystać tablice, to ciężko będzie znaleźć tablice które uwzględniają np. dokłądnie siedem em-de-piątek i cztery es-ha-jedynki ;)
Użytkownik bryn edytował ten post 15 wrzesień 2007, 17:36
ostatnio właśnie słyszałem o stronach na których da się rozgryźć milion najczęściej używanych haseł które są hashowane za pomocą md5. Czyli wg. ciebie bryn 2-3 krotne użycie funkcji hashującej pozwoli na zabezpieczenie się chociaż przed tym?

masz racje bryn, a dla kolegi dawid-san proponuje kubel zimnej wody na glowe... czlowieku - to haselko ma zabezpieczac TYLKO jakas prosta strone, a nie odpalac pociski miedzykontynentalne...

nie popadajmy w paranoje... nawet pojedyncze "solone" MD5 jest nie do ugryzienia dla chlopczyka z pececikiem... poza tym, kto interesowalby sie wlamaniem na konto?? wojna miedzy "dziecmi neo" ?? nie badzmy ani smieszni, ani paranoidalni !! chodzi tylko o to, zeby haslo nie bylo widoczne "wprost" :D
Użytkownik alco81 edytował ten post 15 wrzesień 2007, 17:43
Wracając do tematu, zamiast md5 użyj sha1. Do ciacha daj oryginalne id - inne niż te z bazy danych - i login, ewentualnie hasło. Możesz też bawić się w przeplatanie tych zakodowanych informacji, ale z tym już więcej pracy.

alco ale kto ci powiedział, że ja mam do tego takie podejście ? Po prostu chce to dobrze zrozumieć - uważasz to za coś złego ? :P Wiem do czego pijesz, ale mi bardziej chodzi o to żeby wiedzieć na czym dokładnie polega to czego bym używał
Użytkownik Dawid-San edytował ten post 15 wrzesień 2007, 17:49
Przecież z sumy kontrolnej md5 nie da się wyciągnąć danych właściwych <_< Można jedynie kombinować jakie to były dane . . .
Tak poza tym,to można jeszcze wrzucić na stronę jakiś unique id i włączać go do wszystkich sum - unikalny klucz nie byłby wyświetlany.
Mechanizm na mojej stronie wygląda tak: w bazie jest przechowywany klucz usera - md5 adresu IP, klucza strony, loginu, hasła. Znajduje się on również w ciachu. Jedynym problemem jest zmienne IP - osoby z takowym muszą zawsze się logować. Może da się to jakoś inaczej zrobić,ale nie wiem na razie jak . . .

Kurcze... ale się dyskusja wywołała xD


Jedynym problemem jest zmienne IP - osoby z takowym muszą zawsze się logować. Może da się to jakoś inaczej zrobić,ale nie wiem na razie jak . . .
No właśnie zależy mi, aby osoby ze zmiennym IP też mogły korzystać z autologowania ;/


Do ciacha daj oryginalne id - inne niż te z bazy danych
To znaczy jakie? Losowe?

A jak to jest rozwiązane w profesjonalnych skryptach? Jak np. IPB?


Kurcze... ale się dyskusja wywołała xD

No właśnie zależy mi, aby osoby ze zmiennym IP też mogły korzystać z autologowania ;/

To znaczy jakie? Losowe?

A jak to jest rozwiązane w profesjonalnych skryptach? Jak np. IPB?


Np. numer kolejnościowy użytkownika, coś jak ID tyle że poprzedza go np. liczba 33 albo inny ciąg, dodać go do ciastka w sha1, albo i bez. Do tego login zaszyfrowany. System niech sprawdza za pomocą tych 2 informacji z ciastka czy użytkownik istnieje, jak tak do go zalogować.

#niżej: Nie ma problemu żeby ten unikalny ID zaszyfrować i do bazy dodać, a login pozostawić nie zaszyfrowany :)
Użytkownik m_uli edytował ten post 15 wrzesień 2007, 19:28

Np. numer kolejnościowy użytkownika, coś jak ID tyle że poprzedza go np. liczba 33 albo inny ciąg, dodać go do ciastka w sha1, albo i bez. Do tego login zaszyfrowany. System niech sprawdza za pomocą tych 2 informacji z ciastka czy użytkownik istnieje, jak tak do go zalogować.
No tak, ale powinienem mieć chyba coś niezaszyfrowanego. No bo w jakis sposób sprawdzę czy dany użytkownik istnieje? Jeśli zaszyfruję id, to potem niczego nie podiorę z bazy, skoro MD5/SHA1 działają w jedną stronę.
Np.
select login,password from users where id="moje_id_z_cookies"
resztę mogę zaszyfrować, gdyż znając sposób w jaki to zrobiłem, mogę odpowiednie dane porównać z zaszyfrowanymi.

Dobrze rozumię?

Na razie zrobiłem tak: wysyłam cookie, gdzie przechowuję oddzielone od siebie dwoma znakami niezaszyfrowany ID, zaszyfrowane hasełko (kilkaktornie zahaszowane MD5/SHA1 + unique id), zahaszowany login.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.