Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] bezpieczeństwo w logowaniu
Forum PHP.pl > Forum > PHP
matix
Witam smile.gif
Stworzyłem sobie taki obiektowy autoryzator, pierwszy raz na klasach i obiektach:)

  1. <?
  2. final class auth {
  3. private $id;
  4. private $login;
  5. private $pass;
  6. private $passnormal;
  7. private $userlink;
  8. var $userarray;
  9.  
  10. function __construct($login, $pass) {
  11. $this -> login = $login;
  12. $this -> pass = md5($pass);
  13. $this -> passnormal = $pass;
  14. }
  15.  
  16. public function checkuser() {
  17. $this->userlink = 'users/'.$this->login.'.php';
  18.  if(is_file($this->userlink)) {
  19.  
  20. include ($this->userlink);
  21. if ($pass == $this -> pass) {
  22. // if datas are true = register to private vars profil of user
  23. $this->login = $login;
  24. $this->pass = $pass;
  25. $this->id = $id;
  26.  
  27. // profil loading...
  28. $this->viewprofil();
  29. return true;
  30. }else{
  31. return false;
  32. }
  33.  
  34.  }else{
  35. return false;
  36.  }
  37.  
  38. }
  39.  
  40.  
  41. function viewprofil() {
  42. $this->userarray = array (
  43. 'id' => $this->id,
  44. 'login' => $this->login,
  45. 'pass' => $this->pass,
  46. 'passnormal' => $this->passnormal,
  47. 'user_link' => $this->userlink
  48. );
  49. }
  50. }
  51.  
  52. $auth = new auth('yourlogin', 'yourpassword');
  53. if ($auth->checkuser() === TRUE) {
  54.  
  55. mały test:<br/>
  56. id: '.$auth->userarray['id'].'<br/>
  57. login: '.$auth->userarray['login'].'<br/>
  58. haslo: '.$auth->userarray['passnormal'].'<br/>
  59. user_link: '.$auth->userarray['user_link'].'
  60. ';
  61.  
  62. }
  63. ?>


Skrypt ma za zadanie sprawdzić czy login i hasło jest poprawne, jeśli tak - wyświetla resztę danych użytkownika w postaci Array(), które można użyć.

Wszystko super działa, tylko pytanie, czy ten skrypt jest bezpieczny ? Można go w jakiś sposób obejść na pierwszy rzut oka ? smile.gif Jeśli tak, to poproszę o nakierowanie mnie na poprawę tego.

Jednocześnie proszę, nie tyle co ocenienie tego skryptu, bo z pewnością da sie go lepiej napisać, ale przynajmniej stwierdzenie czy taki skrypt jest nazywany obiektowym ? smile.gif

Pozdrawiam i życzę miłego dnia, Matix
yaotzin
klasa opisuje obiekt (w prostym ujęciu), ja sobie tłumaczę tak klasę jest ona zbiorem funkcji służących danemu celowi, tzn powiedzmy że robimy klasę lampa więc w środku zawieramy pełny zestaw funkcji o nazwach żarówka, abażur, włącznik itp. opisaliśmy obiekt (jest to zagmatwane questionmark.gif). podobnie jest z klasami w programowaniu obiektowym klasa powinna zawierać opis funkcji służących danemu celowi, dzięki temu można też zminimalizować potrzebę przepisywania funkcji z jednej klasy do innej bo wystarczy napisać klasę funkcji wspólnych i je dziedziczyć i stosować różne inne techniki. W oparciu o klasy można zminimalizować w dużym stopniu nakład późniejszej pracy, bo powiedzmy że tworzysz sobie zestaw klas służący tworzeniu sklepu internetowego i później lecisz z tego składając odpowiednie komponenty, warto też zauważyć że funkcje w klasach powinne być odpowiednio uniwersalne tzn. powinne przyjmować głównie argumenty przez parametr funkcji a nie poprzez metody post itp. o klasach można by pisać wiele o ich przydatności jeszcze więcej. Ale aby zoptymalizować czas pisania aplikacji na klasach wymagana jest też do tego odpowiednia aplikacja która wspomagała by korzystanie z klas a z tego co wiem do PHP jest tylko zend studio który to potrafi no i PHPEclipse.

A twój skrypt ? czy jest bezpieczny ? no cóż nie mnie to oceniać, ale w miarę możliwości w klasie nic nie wyświetlaj to co masz wyświetlić zwracaj na zewnątrz, chociaż z drugiej strony w PHP może to się sprawdzać :]
fridek
Hmm, skrypt w sumie jest bezpieczny, tylko brakuje w nim trzymania danych w zmiennych sesji albo ciasteczkach. Wiesz, żeby uniknąć ponownego logowania.

Co do obiektowości, ładnie byłoby zrobić funkcję getUserData() która wywołuje checkuser i zwraca dane użytkownika albo false jeśli niezalogowany.

Mógłbyś też popracować nad wyrzucaniem wyjątków, ale to już kosmetyka.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.