Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Automatyczne logowanie - co przechowywać w cookies?, Dotąd przechowywałem hash hasła, ale chyba są bezpieczniejsze sposoby?
Apocalyptiq
post 17.12.2008, 18:43:39
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Ostatnio zajrzałem w ciastka youtube.com - no i tam, przy ciastku automatycznego logowania, jest bardzo długi ciąg znaków, nie wydaje mi się żeby to był hash hasła. To jest chyba unikalny ciąg znaków, który zostaje przyporządkowany każdemu użytkownikowi podczas logowania? I używany jest właśnie do automatycznego logowania, dzięki czemu nie musimy wysyłać do ciastek hasha hasła? No i podczas logowania, szukany jest w bazie użytkownik o takim hashu?

Hm, a nie prościej po prostu przechowywać tam ID użytkownika? Czy jednak istnieje jakiś sposób podrobienia ciastek?


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
batman
post 17.12.2008, 18:56:41
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie wiem jak to jest na youtube, napisze CI jak ja to robię.
W ciastku trzymam identyfikator sesji, składający się z id użytkownika, kilku dodatkowych danych (ze względów bezpieczeństwa nie napiszę jakich) oraz klucza. Wszytko to leci przez md5 i przypisywane jest do użytkownika. Następnie sprawdzam, czy to co jest w ciastku pasuje do tego co jest w bazie. Dodatkowym zabezpieczeniem jest sprawdzenie co jakiś czas ciastka z wygenerowanym na żądanie hashem (nie pobranym z bazy, a stworzonym z aktualnych danych).

edit
Cytat
Hm, a nie prościej po prostu przechowywać tam ID użytkownika? Czy jednak istnieje jakiś sposób podrobienia ciastek?
Tak. Wystarczy pierwsza lepsza wtyczka do Firefoxa. Jeśli w ciastku będzie tylko id użytkownika, wówczas każdy będzie mógł sobie stworzyć ciastko z dowolnym id.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
erix
post 17.12.2008, 19:11:33
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie wystarczyłoby przedłużenie ważności ciastka sesyjnego za pomocą session_set_cookie_params" title="Zobacz w manualu PHP" target="_manual?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
batman
post 17.12.2008, 19:29:06
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(erix @ 17.12.2008, 19:11:33 ) *
A nie wystarczyłoby przedłużenie ważności ciastka sesyjnego za pomocą session_set_cookie_params" title="Zobacz w manualu PHP" target="_manual?

Nie, ponieważ jeśli ktoś wykradnie ciastko, uzyska dostęp do konta użytkownika, a moje dodatkowe sprawdzenie, czy wszystkie parametry się zgadzają, pozwala uniknąć tego zagrożenia.
Należy pamiętać, by poziom zabezpieczeń dostosować do klasy aplikacji. Jeśli jest to jakaś mała stronka z prostym panelem admina, to nie ma sensu kombinować z zabezpieczeniami.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
erix
post 17.12.2008, 19:32:19
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wiesz, nigdy nie polegam na samym SID. ;P


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Apocalyptiq
post 17.12.2008, 20:21:49
Post #6





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Cytat(batman @ 17.12.2008, 18:56:41 ) *
Dodatkowym zabezpieczeniem jest sprawdzenie co jakiś czas ciastka z wygenerowanym na żądanie hashem (nie pobranym z bazy, a stworzonym z aktualnych danych).


Ale po co? Skoro w bazie ma być zapisany ten hash tych pomieszanych danych, to one się nie zmienią, więc po co sprawdzać je z aktualnymi danymi? Chyba że ten hash ma się zmieniać - ale wtedy ktoś, kto ma włączone automatyczne logowanie, przy tym sprawdzaniu (jeżeli jakieś dane się zmieniły), nie zostanie zalogowany.


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
batman
post 17.12.2008, 20:28:20
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(Apocalyptiq @ 17.12.2008, 20:21:49 ) *
Ale po co? Skoro w bazie ma być zapisany ten hash tych pomieszanych danych, to one się nie zmienią, więc po co sprawdzać je z aktualnymi danymi? Chyba że ten hash ma się zmieniać - ale wtedy ktoś, kto ma włączone automatyczne logowanie, przy tym sprawdzaniu (jeżeli jakieś dane się zmieniły), nie zostanie zalogowany.

No właśnie hash nie jest stały. Może ulec zmianie, w zależności od niektórych akcji użytkownika oraz innych czynników. A to, że ktoś nie zostanie automatycznie zalogowany, to jest to wybór mniejszego zła. Znacznie łatwiej wytłumaczyć klientowi dlaczego go nie zalogowało automatycznie, niż to, że ktoś obcy przegląda jego konto.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
bełdzio
post 17.12.2008, 20:34:56
Post #8





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


tu byłem ;-)

http://www.beldzio.com/autologowanie


--------------------
Go to the top of the page
+Quote Post
Apocalyptiq
post 17.12.2008, 21:49:59
Post #9





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Dzięki bełdzio za artykuł smile.gif Zrobiłem to autologowanie generując przy rejestracji hash, za pomocą uniqid, z pewnym zmiennym dla każdego użytkownika prefiksem, i sprawdzanie ciastka odbywa się tak, że szukam w bazie użytkownika z takim właśnie hashem. Z tego raczej nie da rady żadnych danych wyciągnąć smile.gif Możnaby jeszcze pobawić się ze zmienianiem tego hasha co jakiś czas, ale myśle że na serwis nad jakim pracuje takie coś wystarczy smile.gif
Dzięki za pomoc!


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
maly_pirat
post 9.06.2009, 12:22:14
Post #10





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 13.06.2007

Ostrzeżenie: (0%)
-----


Sorka za odświeżenie starego tematu, ale jestem na etapie auto logowania, i mam parę pytań odnośnie całego projektu.

Do tabeli: uzytkownicy dodałem nową kolumnę tak jak Apocalyptiq pisał (patrz post wyżej) char(32).
Podczas rejestracji nowego użytkownika do serwisu, generuje mu unikalny hash: hash = md5(uniqid());
i wysyłam te informacje do bazy MySQL. Użytkownik od tego momentu posiada swój unikalny login, unikalny ID, oraz unikalny hash.

Teraz kwestia sprawdzania danych, jak to ma wyglądać? Na początku dokumentu na pewno wpisać:
session_start(); Ale co dalej? W jaki sposób wykonać sprawdzania czy użytkownik posiada już ciastko w tym serwisie?
Proszę tylko o zarys całego kodu.
Go to the top of the page
+Quote Post
Fifi209
post 9.06.2009, 12:29:50
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Może tak $_COOKIE sprawdzisz?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
maly_pirat
post 9.06.2009, 13:18:47
Post #12





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 13.06.2007

Ostrzeżenie: (0%)
-----


Ogólnie na szybko skleiłem taki kodzik, wszystko działa, jednak mam pytanie odnośnie sprawdzania tego unikalnego HASHa.

  1. <?php
  2. session_name('homepage_session');
  3.  
  4. if(isset($_COOKIE['homepage_cookie']))
  5. {
  6.        echo $_COOKIE["homepage_cookie"];
  7.        // tutaj jeszcze odnośnik do wylogowania, aby zniszczył sesje + usuną ciacho
  8. }
  9. else {
  10.    if(isset($_POST['lolek'])) {
  11.        setcookie("homepage_cookie", 'Przykładowy tekst', time()+(24*60*60));        
  12.        redir('index'); // przekierowanie na index
  13.    }
  14.    else {
  15.        // tutaj mam formularz logowania
  16.        
  17.    }
  18. }
  19. ?>


W jaki sposób mam sprawdzić unikalny hash? Wiem że trzeba pobrać z bazy informacje, ale gdzie to wstawić w skrypcie?
Go to the top of the page
+Quote Post
erix
post 9.06.2009, 13:23:41
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. if(isset($_COOKIE['homepage_cookie']))
  3. {
  4. ?>

A jak sprawdzać, to już zadanie domowe. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:49