Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] bezpieczeństwo w logowaniu, pierwszy skrypt na klasach :)
matix
post 4.05.2007, 10:32:02
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


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


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
yaotzin
post 4.05.2007, 10:54:50
Post #2





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 12.02.2007
Skąd: Zielona Góra

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


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ć :]


--------------------
------
Per Aspera Ad Astra
Go to the top of the page
+Quote Post
fridek
post 4.05.2007, 10:59:44
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 19.12.2006

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


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.

Ten post edytował fridek 4.05.2007, 10:59:54
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: 14.08.2025 - 04:17