Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Czy array_map jest dobry na XSS?
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
czy wrzucenie na początek skryptu:

  1. $_GET = array_map('strip_tags', $_GET);


Jest wystarczającym sposobem na zabezpieczenie przed XSS z GETa?
bełdzio
teoretycznie, wsio zależy od późniejszego użycia zmiennych z geta
nospor
@beldzio no wlanie nie. ataki XSS nie operają sie tylko na wprowadzeniu znaczników. Mozna sie w zupelnosci bez nich obejsc.
lukasamd
No to co warto jeszcze dorzucić?
Pilsener
Jeśli zmienne mają być użyte w skrypcie, to addslashes, jeśli do zapytań do bazy to mysql_real_escape_string, zamiast strip_tags lepiej jest użyć htmlspecialchars. Oczywiście należy też filtrować zmienne GET w zależności od przeznaczenia, np. tylko liczby całkowite jeśli to ma być identyfikator czy numer strony.
blooregard
Ale to nie zabezpieczy np. przed czymś takim:
Cytat
%3Cscript%3Ealert%28%27hacked%21%21%21%27%29%3C%2fscript%3


Generalnie skupiłbym się na walidacji zmiennej przed jej docelowym uzyciem, np. w miejscu, gdzie zmienna id z $_GET ma byc użyta jako liczbowy identyfikator czegos tam, rzutować ją na INT-a, albo sprawdzać is_int() czy is_numeric().
Albo utworzyć whitelist'ę z dopuszczalnymi wartościami spodziewanego parametru i nie dopuścic do użycia zmiennej $_GET, której wartość nie znajduje się na tej liście.

Uniwersalna walidacja ma te wadę, że nie przewidzisz wszystkich możliwych wektorów ataku i nie jesteś w stanie wszystkiego odfiltrować. Większość tak, ale nie wszystko.
bełdzio
Cytat(nospor @ 3.02.2010, 13:32:17 ) *
@beldzio no wlanie nie. ataki XSS nie operają sie tylko na wprowadzeniu znaczników. Mozna sie w zupelnosci bez nich obejsc.

ależ oczywiście i dlatego też napisałem, że teoretycznie i wsio zależy od wykorzystania owych zmiennych
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.