Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Cookie -> zmiana wartosci przez usera, Jak się tego wystrzegać, jak to zablokowac.
entine
post 8.09.2007, 12:44:11
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 18.08.2007
Skąd: $this

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


Pytam. Mam takie nurtujące mnie pytanie.
Mianowicie jak sprawdzacie, czy użytkownik strony nie zmienił sobie wartości w ciasteczku ($_COOKIE).

Ja kiedyś robiłem to w bardzo prosty, lecz mało profesjonalny sposób. Przykład z logowania:
Użytkownik loguje się, zapisuje mu się ciasteczko login i id oraz md5(base_64decode(pass)). Później za każdym przeładowaniem strony skrypt sprawdzał, czy są takie dane w bazie danych, mniej więcej tak:

  1. SELECT * FROM Logowanie WHERE login=$login AND haslo=$haslo AND id=$id


Jest to niestety sposób niedopuszczalny, a to dlatego, że jest niewydajny, szczególnie dla serwisów z duża ilością wejść dziennych.

Bardzo jestem ciekawy jak wy to rozwiązujecie, a może jest jakaś inna możliwość w php, o której nie wiem ?

Pozdrawiam winksmiley.jpg


--------------------
actually, my recent projects:
entine.wordpress.com - tworzenie stron , mvc , wzorce strukturalne , php , mysql , javascript , ajax - webdesign & webcoding = webmaster
Go to the top of the page
+Quote Post
GrayHat
post 8.09.2007, 13:45:09
Post #2





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

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


dodawaj do cookie checksum np:
  1. <?php
  2. $_COOKIE['login'] = 'zenek';
  3. $_COOKIE['login_time'] = time();
  4. $_COOKIE['checksum'] = md5($_COOKIE['login'].time());
  5. ?>

i potem sprawdzasz:
  1. <?php
  2. if ($_COOKIE['checksum'] == md5($_COOKIE['login'].$_COOKIE['login_time'])){
  3. // dane autentyczne
  4. } else {
  5. // ktos przyhakierzyl ;P
  6. }
  7. ?>


--------------------
*Note: No animals were killed durning the construction of this post.
Go to the top of the page
+Quote Post
entine
post 8.09.2007, 16:39:41
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 18.08.2007
Skąd: $this

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


@GrayHat:

Jesteś genialny ! W życiu nie wpadłbym na coś tak prostego i fajnego. Wprawdzie można shakować nadal, ale prawdopodobieństwo jest dużo mniejsze niż w przypadku nie zabezpieczenia. Dzięki !


--------------------
actually, my recent projects:
entine.wordpress.com - tworzenie stron , mvc , wzorce strukturalne , php , mysql , javascript , ajax - webdesign & webcoding = webmaster
Go to the top of the page
+Quote Post
GrayHat
post 8.09.2007, 16:59:45
Post #4





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

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


Dziekuje za slowa uznania.
Mozesz jeszcze obnizyc prawdopodobienstwo zlamania checksumy trzymajac w configu jakas wartosc np liczbowa ktora jest generowana przy instalacji systemu a potem dodawana do checsum:

  1. <?php
  2. $config['checksumAddCode'] = 123456789;
  3. ?>


i nasz kod cookie:

  1. <?php
  2. $_COOKIE['login'] = 'zenek';
  3. $_COOKIE['login_time'] = time();
  4. $_COOKIE['checksum'] = md5($_COOKIE['login'].time().$config['checksumAddCode']);
  5. ?>



  1. <?php
  2. if ($_COOKIE['checksum'] == md5($_COOKIE['login'].$_COOKIE['login_time'].$config['checksumAddCode'])){
  3. // dane autentyczne
  4. } else {
  5. // ktos przyhakierzyl ;P
  6. }
  7. ?>


teraz nawet jak "hakier" bedzie wiedzial o kodowaniu hasla to i tak nie zgadnie wartosci z configu winksmiley.jpg

pozdrawiam winksmiley.jpg

Ten post edytował GrayHat 8.09.2007, 17:01:33


--------------------
*Note: No animals were killed durning the construction of this post.
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: 11.05.2025 - 09:41