Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Cookie -> zmiana wartosci przez usera, Jak się tego wystrzegać, jak to zablokowac.
entine
post
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
GrayHat
post
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. ?>
Go to the top of the page
+Quote Post
entine
post
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 !
Go to the top of the page
+Quote Post
GrayHat
post
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował GrayHat 8.09.2007, 17:01:33
Go to the top of the page
+Quote Post

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: 23.08.2025 - 08:58