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 smile.gif Wystarczy ustawic sobie recznie w cookie, ze jestem zalogowany jako admin i nie ma mocnych 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.


--------------------
Renesansowe Królestwa - gra RPG w średniowieczu. Zapraszam :)
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


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
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 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


--------------------
Renesansowe Królestwa - gra RPG w średniowieczu. Zapraszam :)
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.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
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)


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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ę.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
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 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?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 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ć laugh.gif
a na poważnie
Cytat
jedyna mozliwosc to utworzenie nowego i wysłanie.
Dokładnie smile.gif Dobrze by było, że gdy tylko koleś zaloguje się na to haslo, wyskoczyl mu komuniakt, ze musi je zmienic na swoje.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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).


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
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 winksmiley.jpg


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V  < 1 2
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 Aktualny czas: 21.08.2025 - 15:14