Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cookies a bezpieczeństwo BD
Forum PHP.pl > Forum > PHP
Darti
Tak sobie pomyślałem, że w sumie tak się boję tablic $_GET i $_POST a nie pomyślałem nigdy o cookiesach!

Czy istnieje realne zagrożenie dla bazy jak zrobię?:
  1. <?php
  2. mysql_query(&#092;"SELECT pass FROM users WHERE \".$_COOKIE['login']);
  3. ?>
Marusz
Abstrachujac od samego uzycia kukizow w ten sposob (bo jakos srednio widze zastosowanie o bezpieczenstwie nie wspomne). Polecam zmienic ciut zapytanie, na:
  1. <?php
  2.  
  3. $sql = &#092;"SELECT `pass` FROM `users` WHERE `cos` = \". mysql_escape_string($zmienna) .\"\";
  4.  
  5. ?>

Wierz mi, bedziesz bezpieczniejszy...
xarr
Hashuj md5() dane zapisywane w cookiesach i jak post wczesniej kolega wspomnial przed porownaniem uzyj mysql_escape_string() ewentualnie mysql_real_escape_string() wtedy zagrozenia dla bazy przynajmniej w kwestii tego zapytania nie uswiadczysz. Ogolnie jednak poszukaj na tym forum info o logowaniu, sesjach i ciastkach. Dowiesz sie napewno wystarczajco duzo by byc juz pewnym co zastosowac smile.gif
dr_bonzo
Cookiesy mozna wysylac DOWOLNE (tak jak dane get i postaz) -- decyduje o tym user, np w operze mozsz wyedytowac wartosc cookiesa, albo wyslac telnetem.
phpbybastek
  1. <?php
  2. function filtruj_sql($input) {
  3. $reg = &#092;"(delete)|(update)|(union)|(insert)\";
  4. return(eregi_replace($reg, &#092;"\", $input));
  5. }
  6.  
  7. $zmienna = $_COOKIE['zmienna'];
  8.  
  9. $zmienna = filtruj_sql(mysql_escape_string($zmienna));
  10. $sql = &#092;"SELECT `pass` FROM users WHERE cos = '$zmienna'\";
  11. ?>

dla dopełnienia tematu
Kocurro
powiem Ci tyle - był sobie pewien skrypt (CC) na którym opeirały sie wszystkie firmy GPTR (zarabianie poprzez klikanie w maile i czytanie reklam)...i pewnego dnia pojawił się ktoś kto zauważył, że cookies można zmienić jak się podoba - efekt tego był taki, że wiele osób straciło 'dorobek życia' w tych firmach a koleś ma teraz grubą kasę...

Dam Ci dobrą radę - jeśli chcesz cokolwiek przechowywać w ciasteczkach to tylko identyfikator sesji lub pseudo sesji (pseudo sesja - taka sesja, która trwa nieskończenie długo, używana do przechowywania informacji o autolofginach itp.) inaczej sam sobie napytasz biedy.

Bo np. czasami wystarczy zmienić trochę w cookie by już uzyskać dostęp na cudze konto itp. etc. itd.
Darti
Dzięki smile.gif
będę stosował mysql_real_escape_string() tak jak mi radzicie (dla POST i GET to robilem ale dla cookies nie)

ps - Prometeus ja tak robię - w cookie mam tylko zapisany identyfikator sesji a reszte wyciagam z bazy
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.