Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Jakie logowanie najlepiej zrobic?
nickers
post
Post #21





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 6.02.2006
Skąd: Piła->Kotun();

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


Jesli chodzi o bezpieczenstwo. To jesli dobrze zrozumialem, to przy zapisywaniu w cookie tylko czy uzytkownik jest zalogowany, nie trzeba znac nawet hasla (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wystarczy ustawic sobie recznie w cookie, ze jestem zalogowany jako admin i nie ma mocnych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ja uzywam sesji, bo mysle, ze sa bazpieczniejsze. Ciezej sie wlamac, jesli nie ma sie zakodowanego hasla. Czasem wystarczy blad przegladarki i cookie nie zostanie usuniety i kazdy kto bedzie chcial bedzie mial dostep do konta. W cookie zapisuje tylko, jesli uzytkownik chce byc "zapamietany", ale wtedy tez tylko zakodowane informacje.
Go to the top of the page
+Quote Post
sobstel
post
Post #22





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat
Ja uzywam sesji, bo mysle, ze sa bazpieczniejsze (...)


bezpieczniejsze od czego? mechanizm sesji uzywa cookies! reszty nie bede komentowac...

Ten post edytował sopel 28.02.2006, 15:18:52
Go to the top of the page
+Quote Post
nickers
post
Post #23





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 6.02.2006
Skąd: Piła->Kotun();

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


Nie wiem, jak na innych serwerach, ale u mnie w cookie przechowywane jest tylko id sesji. Nawet jesli zostanie nie usuniete, to przeciez sesja ma maksymalny czas trwania.

Jesli w cookie zostanie user i haslo to przepadles :/ Nawet jesli zostanie w wersji zakodowanej, to moze dane te moga latwo wpasc w niepowołane ręce. Taka osoba majac tylko zakodowana wersje hasla, moze je sobie ustawic jako cookie i zmienic haslo na inne, czyli przejac kontrole nad kontem.

Chyba nie mowie zle (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Jesli tak to prosze mnie poprawic, nie uwazam sie za znawce tematu, to tylko moje przemyslenia.

Ten post edytował nickers 28.02.2006, 15:30:31
Go to the top of the page
+Quote Post
sobstel
post
Post #24





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(nickers @ 2006-02-28 15:28:37)
Nie wiem, jak na innych serwerach, ale u mnie w cookie przechowywane jest tylko id sesji. Nawet jesli zostanie nie usuniete, to przeciez sesja ma maksymalny czas trwania.

Jesli w cookie zostanie user i haslo to przepadles :/ Nawet jesli zostanie w wersji zakodowanej, to moze dane te moga latwo wpasc w niepowołane ręce. Taka osoba majac tylko zakodowana wersje hasla, moze je sobie ustawic jako cookie i zmienic haslo na inne, czyli przejac kontrole nad kontem.

a, sorry, zle zrozumialem twojego wczesniejszego posta. w zupelnosci sie zgadzam, dlatego jestem przeciwny trzymaniu loginu i hasla (nawet zakodowanego) w cookies, zwlaszcza ze nie potrafie znalezc powodu, dla ktorego mialoby byc to lepsze i bezpieczeniejsze od trzymania samego id sesji.
Go to the top of the page
+Quote Post
marcini82
post
Post #25





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

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


Nie zapominajmy o tym, ze przegladarka przy kazdym wywolaniu wysyla do serwera zawartosc cookies, wiec trzymanie tam tak poufnych danych jak hasla, nawet w zakodowanej postaci, nie jest dobrym pomyslem.
Ktos, kto podslucha sobie na snifferze tylko maly fragment sesji uzytkownika, od razu uzyskuje dostep do jego zakodowanego hasla i Bog wie czego jeszcze, co programista raczyl nieopatrznie w cookie umiescic.
Go to the top of the page
+Quote Post
nospor
post
Post #26





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tak i dlatego hasla w ciasteczkach powinny byc trzymane tylko na życzenie użytkownika, gdy wybierze np. opcję Zapamiętaj mnie (zaloguj automatycznie)
Go to the top of the page
+Quote Post
sobstel
post
Post #27





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(nospor @ 2006-03-01 08:54:48)
Tak i dlatego hasla w ciasteczkach powinny byc trzymane tylko na życzenie użytkownika, gdy wybierze np. opcję Zapamiętaj mnie (zaloguj automatycznie)

ale dlaczego i po co? powstrzymywałbym się o przesyłania hasła do usera kiedykolwiek. lepiej chyba trzymać jakiś losowo wygenerowany id, który jest sprawdzany przy wejściu na stronę.
Go to the top of the page
+Quote Post
nospor
post
Post #28





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak mowilem haslo, mialem na mysli hasha z tego hasla (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Moje niedomowienie.

@sopel mógłbyś mi wytlumaczyc ten mechanizm. Nie jestem pewien czy dobrze Cię zrozumiałem.
Chodzi ci oto, że generujemy id, zapisujemy w bazie i to samo id do ciastka? POtem tylko porownujemy? A gdy sie koles tak zaloguje to znowu zmieniamy?
Go to the top of the page
+Quote Post
wozniak
post
Post #29





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


ok. czyli robie tak:

  1. <?php
  2. // to oczywiscie bedzie z formularza
  3. $login= "login"; 
  4. $haslo= "haslo";
  5.  
  6. $zapytanie = sql("SELECT * FROM ".$prefix."kontrahenci WHERE kontrahenci_login='$login' ");    
  7. while ($rekord = mysql_fetch_array($zapytanie)) 
  8.   {   
  9. $kontrahenci_haslo = $rekord['kontrahenci_haslo'];
  10. if($haslo == kontrahenci_haslo){
  11. setcookie('login', '$login');
  12. setcookie('haslo', '$haslo');
  13. }
  14. }
  15.  
  16. ?>

A pozniej za kazdym razem sprawdzac tak samo tylko login i hasło z cookies?
I oczywiscie w md5() wrzuce haslo tylko jak pozniej wysłac uzytkownikowi hasło ktore jest zakodowane md5()?

Ten post edytował wozniak 4.03.2006, 13:59:06
Go to the top of the page
+Quote Post
Levabul
post
Post #30





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


Cytat(nospor @ 2006-03-01 10:18:53)
Chodzi ci oto, że generujemy id, zapisujemy w bazie i to samo id do ciastka? POtem tylko porownujemy? A gdy sie koles tak zaloguje to znowu zmieniamy?

Jeżeli tak to na identycznej zasadzie działa ta klasa sesji (napisana dawien dawno pod mini serwis (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )

  1. <?php
  2. define ('SESSION_TIME', 3600);
  3.  
  4. class session {
  5.  
  6. var $session_id;
  7. var $values = array ();
  8. var $insert = 0;
  9.  
  10. function session () {
  11. if (strlen($_COOKIE['session_id']) == 32) {
  12. $this -> session_id = $_COOKIE['session_id'];
  13. setCookie ('session_id', $this ->session_id, time()+ SESSION_TIME);
  14. $query = mysql_query ("SELECT `values` FROM sessions WHERE `id` = '{$this -> session_id}'");
  15. $row = mysql_fetch_array ($query);
  16. $this -> values = unserialize ($row['values']);
  17. }
  18. else {
  19. $this -> session_id = md5 (time ());
  20. setCookie ('session_id', $this -> session_id, time()+ SESSION_TIME);
  21. $this -> insert = 1;
  22. }
  23. }
  24.  
  25. function getValue ($name){
  26. return $this -> values [$name];
  27. }
  28.  
  29. function setValue ($name, $str) {
  30. $this -> values [$name] = $str;
  31. }
  32.  
  33. function sessionClose () {
  34. $values = serialize ($this -> values);
  35. $time = time ();
  36. $maxTime = $time - SESSION_TIME;
  37. if ($this -> insert)
  38. mysql_query ("INSERT INTO `sessions` (`id`, `values`, `time`) VALUES ('{$this -> session_id}', '$values', '$time')");
  39. else
  40. mysql_query ("UPDATE `sessions` SET `values`='$values', `time` = '$time' WHERE `id` = '{$this -> session_id}'");
  41. mysql_query ("DELETE FROM `sessions` WHERE `time` < '$maxTime'");
  42. }
  43.  
  44. }
  45. ?>


Clasa zapisuje dane z sesji do bazy jako zserializowana tablica, a po przejściu na inną stronę i załadowaniu sesji (jeżeli ta istnieje) dane są pobierane z bazy i odserializowane. Bardzo łatwo zrobić za jej pomocą takie logowanie ...

Ten post edytował Levabul 4.03.2006, 15:01:12
Go to the top of the page
+Quote Post
wozniak
post
Post #31





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Mam teraz taki problem jak mam hasło zapisane md5 i uzytkownik zapomni hasło to jak mam mu je wysłac?jak odkodowac?Chyba nie da sie tak? jedyna mozliwosc to utworzenie nowego i wysłanie.
Go to the top of the page
+Quote Post
nospor
post
Post #32





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
hasło zapisane md5 i uzytkownik zapomni hasło to jak mam mu je wysłac
Wyslij mu hasha, następny razem będzie pamiętać by nie zapomnieć (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
a na poważnie
Cytat
jedyna mozliwosc to utworzenie nowego i wysłanie.
Dokładnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dobrze by było, że gdy tylko koleś zaloguje się na to haslo, wyskoczyl mu komuniakt, ze musi je zmienic na swoje.
Go to the top of the page
+Quote Post
sobstel
post
Post #33





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(nospor @ 2006-03-01 09:18:53)
Nie jestem pewien czy dobrze Cię zrozumiałem. Chodzi ci oto, że generujemy id, zapisujemy w bazie i to samo id do ciastka? POtem tylko porownujemy? A gdy sie koles tak zaloguje to znowu zmieniamy?

dokladnie tak jak napisales. oczywiscie dobrze by bylo tez trzymac identyfikator albo login samego usera albo cokolwiek po czym go zidentyfikujemy (mozna i bez tego, ale musimy dbac zeby id w bazie bylo unikalne). samo id jest tylko zwyklym zabezpieczeniem.

mechanizm jest praktycznie bliznaczy do tego z zapisywaniem do hasla loginu i zhashowanego hasla - mi sie po prostu nie podoba fakt uzywania do tego hasla (nawet zahashowanego).
Go to the top of the page
+Quote Post
nospor
post
Post #34





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To rozwiązanie jest powiedzmy ciut lepsze od trzymania hasha hasla, ale tylko w przypadku gdy za kazdym razem generujemy to id. Ale jak pisalem tylko ciut lepsze i nie wiem gdzie to jest stosowane. Jesli jakiś serwis bardzo chce miec bezpiecznie, to wogole nie udestępni opcji zapamiętywania.
Wadą takiego rozwiązania jest to, że np.:
zapamiętasz się na jednym kompie/przeglądarce. Za jakis czas zapamietasz sie na innym kompie/przegladarce (powiedzmy komp w pracy i w domu). No i jak się zalogujesz spowrotem na pierwszym, to juz nie wejdziesz z automata, bo identyfikator juz bedzie inny. Takie szukanie dziury w całym (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
wozniak
post
Post #35





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Zrobiłem takie logowanie:
Logowanie:
  1. <?php
  2. if(isset($login) &&($haslo)){
  3. $query = sql("SELECT kontrahenci_login FROM ".$prefix."kontrahenci WHERE kontrahenci_login='$login'");    
  4. $rekord = mysql_num_rows($query);
  5.  
  6. if($rekord == '1' ){
  7.  
  8. $ip = $_SERVER[ 'REMOTE_ADDR' ];
  9. $_SESSION['login']    = $login;
  10. $_SESSION['haslo']    = $haslo;
  11. $_SESSION['ip']    = $ip;
  12.  
  13. print("Zalogowany jako $login z ip:$ip");
  14. echo '<br /><a href="1.php?pic=dodaj&PHPSESSID='.session_id().'">strona 2</a>';
  15. }
  16. }
  17. ?>

Sprawdzenie czy zalogowany:
  1. <?php
  2.  
  3. if(isset($_SESSION['login'])&& ($_SESSION['haslo'])){
  4. $ipa = $_SERVER[ 'REMOTE_ADDR' ];
  5. $dwa = $_SESSION['ip'];
  6. if($ipa == $dwa){
  7. $login = $_SESSION['login']; $haslo = $_SESSION['haslo'];
  8. $query = sql("SELECT kontrahenci_login FROM ".$prefix."kontrahenci WHERE kontrahenci_login='$login'");    
  9. $rekord = mysql_num_rows($query);
  10.  
  11. if($rekord == '1' ){
  12. print("ok3245");
  13. echo '<br /><a href="1.php?pic=test&PHPSESSID='.session_id().'">strona 2</a>';
  14.  
  15. }
  16. }
  17. }
  18. ?>
Dodałem do sesji IP bo jak ktos by dał link innej osobie to tamta osoba od razy była by zalogowana.

Ten post edytował wozniak 14.03.2006, 01:22:04
Go to the top of the page
+Quote Post
nospor
post
Post #36





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $query = sql("SELECT kontrahenci_login FROM ".$prefix."kontrahenci WHERE kontrahenci_login='$login'");    
  3.  
  4. ?>
Logujesz uzytkownika tylko na podstawie loginu. a co z haslem? Widze, ze w ifie sparawdzasz istnienie hasla, ale w zapytaniu juz go olałeś. ciut niebezpiecznie.
Go to the top of the page
+Quote Post
wozniak
post
Post #37





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Zapomniałem dodac;)Ale takie logowanie moze byc?
Go to the top of the page
+Quote Post
nospor
post
Post #38





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




moze byc. oczywiscie zalezy jeszcze jak dodasz do tego haslo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

w tym miejscu powiem jeszcze, ze jesli to jest zwykly serwisik, bez większego bezpieczenstwa, to jesli koles jest juz zalogowany i ma to w sesji, to w zasadzie nie musisz sprawdzac jeszcze raz w bazie. troche po php programmerze pojechalismy w tej kwestii, ale mowiliśmy tam o serwisach wymagających większego bezpieczenstwa, aczkolwiek jawnie nie powiedziano o tym. jesli php programmer mial na mysli takie proste aplikacje, to faktycznie nie trzeba biegac ciągle do bazy. kwestia podejscia do bezpieczenstwa w danej aplikacji
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:54