Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Globalne zabezpieczenie skryptu
Forum PHP.pl > Forum > Przedszkole
Amarel
Wpadlem na pomysl, jak zabezpieczyc wszystkie dane otrzymywane od uzytkownika bez zabezpieczania ich za kazdym razem oddzielnie.

  1. <?php
  2. while ( list($key, $value) = each($_GET) ) {
  3.    $_GET[$key] = mysql_real_escape_string(htmlspecialchars(strip_tags($value), ENT_QUOTES));
  4. }
  5.  
  6. while ( list($key, $value) = each($_POST) ) {
  7.    $_POST[$key] = mysql_real_escape_string(htmlspecialchars(strip_tags($value), ENT_QUOTES));
  8. }
  9. ?>


Czy rozwiazanie, ktore zastosowalem jest dobre?
erix
Nie zawsze jest potrzeba zabezpieczania w ten sposób danych...
  1. masz wartość liczbową - kombinujesz - masz przecież rzutowanie
  2. o array_map" title="Zobacz w manualu PHP" target="_manual słyszałeś? snitch.gif
  3. ktoś na chama wrzuci N-set pól, a Twój skrypt korzysta tylko z kilku - po co zajeżdżać serwer ubezpieczaniem niepotrzebnych?
Amarel
  1. <?php
  2. if(count($_GET) > 4 OR count($_POST) > 16) {
  3.    die('Zbyt duza liczba parametrow przekazanych do systemu. Hacking?');
  4. }
  5. ?>


Zrobilem cos takiego na poczatku. Wiecej danych nie bede potrzebowal przekazywac w skrypcie, wiec jak ktos przekaze wiecej to skrypt wykona die().
Funkcja array_map to dobry pomysl. Dzieki smile.gif

Czy zastosowanie obok siebie funkcji mysql_real_escape_string, htmlspecialchars i strip_tags zabezpieczy mnie przed wszystkimi atakami?
erix
  1. nie o to chodzi... lepiej rób escape'owanie tylu pól, ile trzeba; nieraz przeglądarka wyśle więcej pól (nie wiem, jak to się ma do MAX_FILE_SIZE) i wtedy kicha
  2. wystarczy mysql_real_escape_string" title="Zobacz w manualu PHP" target="_manual, bez przesady. tongue.gif
Amarel
Funkcja mysql_real_escape_string nie zabezpieczy mnie chyba przed XSS, itp... Kod html/java/php dalej bedzie dalo sie wstawic - prawda?
erix
No tak, ale to naprawdę zależy od kontekstu...

Jak będziesz chciał użytkownikowi udostępnić XHTML, to będziesz na chama wszystko filtrował? Nie.
Amarel
Zgadzam sie z Toba w pelni smile.gif Jednak pisze projekt, w ktorym nie musze udostepniac xhtml. Tak wiec, uzycie tych trzech funkcji do filtrowania wystarczy, aby zabezpieczyc sie przed wszystkimi atakami ( nie zamierzam przyjmowac od uzytkownikow zadnych plikow, a wiec tablicy z plikami nie zabezpieczalem )?
erix
Ale wiesz - dobre nawyki lepiej sobie wyrabiać od początku, tych złych potem jest ciężko się pozbyć.
Amarel
Rozumiem Ciebie w pelni, problem jednak polega na tym, ze projekt ten bedzie zawieral naprawde duzo plikow, ktore beda co raz dodawane przez rozne osoby i ciezko mi bedzie to opanowac i wykryc wszystkie bledy. Dlatego wlasnie musialem zastosowac takie rozwiazanie.
erix
Dlatego używa się bibliotek, które są do tego celu - frameworki.

Poza tym, masz jeszcze binding parameters, KISS. tongue.gif
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.