Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt] bezpieczne logowanie
kiamil
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.03.2008

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


Link do dema: DEMO
Link do kodu: CODE

Zapraszam do oceniania, autoryzacja oparta na jednej zmiennej sesyjnej, IMHO unikalny skrypt. Potrzebwałbym też porady dotyczące bezpieczeństwa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





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




Cytat
Odstępów nigdy nie robiłem

Pora zacząć. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Kod
global $_SESSION; global $cfg;

Blah, na chorobę globalizować $_SESSION? Skoro piszesz jakieś skrypty zdobądź chociaż podstawy... (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

Kod
return sha1(time().$nick);

IMHO trochę za słaby ten token... Masz funkcje generowania liczb pseudolosowych, /dev/urandom, uniqid" title="Zobacz w manualu PHP" target="_manual...
Poza tym, nie wiem, po co podajesz użytkownikowi token...

Kod
<? session_start(); session_regenerate_id(); ?>

A na szto tak?

Kod
md5('adm'.$cfg['salt'])

MD5 za bezpieczne nie jest.

Ogólnie: kod nieczytelny, nic rewelacyjnego.
Go to the top of the page
+Quote Post
.radex
post
Post #3





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat(erix @ 23.12.2008, 21:52:30 ) *


No właśnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Porównaj sobie to:

  1. <?
  2. include('mysql.php');
  3.  
  4. $cfg['mysql']['alias']='log_';
  5. $cfg['salt'] = '_babia_stefa_lubi_ogorki_xD';
  6.  
  7. function new_otoken($nick) {
  8. global $_SESSION; global $cfg;
  9. $ot = otoken($nick);
  10. mysql_query('UPDATE '.$cfg['mysql']['alias'].'users SET u_otoken="'.$ot.'" WHERE u_nick="'.$nick.'"');
  11. $_SESSION['otoken']=$ot;
  12. }
  13. function otoken($nick) {
  14. return sha1(time().$nick);
  15. }
  16. ?>


z tym:
  1. <?php
  2.   include 'mysql.php';
  3.  
  4.   $cfg['mysql']['alias'] = 'log_';
  5.   $cfg['salt'] = '_babia_stefa_lubi_ogorki_xD';
  6.  
  7.   function new_otoken($nick)
  8.   {
  9.      global $_SESSION;
  10.      global $cfg;
  11.      
  12.      $ot = otoken($nick);
  13.      
  14.      mysql_query('UPDATE ' . $cfg['mysql']['alias'] . 'users SET u_otoken="' . $ot . '" WHERE u_nick="' . $nick . '"');
  15.      
  16.      $_SESSION['otoken'] = $ot;
  17.   }
  18.  
  19.   function otoken($nick)
  20.   {
  21.      return sha1(time() . $nick);
  22.   }
  23.   ?>


Nie wiem jak Ty, ale mi się wydaje, że moja wersja jest dużo bardziej czytelna. Ot, bardzo dobry nawyk.

Natomiast mam dwie bardzo ważne uwagi:
1. Zaprzestań stosować globali (po konkrety do wyszukiwarki (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )
2. Rozpocznij stosować mysql_real_escape_string

globale są złe, a "escapować" ciągi znaków należy przed wysłaniem do bazy danych (dla zabezpieczenia przed sql injection), czyli jeszcze raz:

  1. <?php
  2.   include 'mysql.php';
  3.  
  4.   $cfg['mysql']['alias'] = 'log_';
  5.   $cfg['salt'] = '_babia_stefa_lubi_ogorki_xD';
  6.  
  7.   function new_otoken($nick)
  8.   {
  9.      global $cfg; // to należy wywalić...
  10.      
  11.      $nick = mysql_real_escape_string($nick);
  12.      
  13.      $ot = otoken($nick);
  14.      
  15.      mysql_query('UPDATE ' . $cfg['mysql']['alias'] . 'users SET u_otoken="' . $ot . '" WHERE u_nick="' . $nick . '"');
  16.      
  17.      $_SESSION['otoken'] = $ot;
  18.   }
  19.  
  20.   function otoken($nick)
  21.   {
  22.      return sha1(time() . $nick);
  23.   }
  24.   ?>


PS. Stosuj komentarze w swoim kodzie, bo jak będziesz musiał edytować kod, którego nie ruszałeś od kilku miesięcy to nie będziesz wiedział "o co tu chodzi?" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 18:45