Wszystkie dane przesłane do skryptu przez użytkowników powinny być dokładnie filtrowane pod kątem obecności w nich kodu HTML i PHP, do tego celu należy używać funkcji:
htmlspecialchars()
strip_tags()
Warto także używać funkcji (odpowiednie dodający i usuwający znak przed znakami: ‘ , ” , / , NULL) :
addslashes() //przed zapisaniem tekstu do bazy/pliku
stripslashes() //przed wyświetleniem tekstu z bazy/pliku
Należy też sprawdzać typ danych przekazanych przez użytkownika do skryptu, jeśli oczekujemy zmiennej typu int (liczby) to sprawdzajmy czy rzeczywiście otrzymaliśmy liczbę. Służą do tego funkcje:
is_double(),is_float() //sprawdza czy zmienna jest liczbą rzeczywistą
is_int(),is_integer() //sprawdza czy zmienna jest liczbą całkowitą
is_string() //sprawdza czy zmienna jest ciągiem znaków
Jeśli includujemy pliki pochodzące ze zmienny $_GET należy używać instrukcji:
$plik = basename ($_GET[‘plik’]);
funkcja ta zwraca jedynie nazwę pliku, czyli jeśli wartość zmiennej $_GET[‘plik’] to C:Windowssystem32explorer.exe, to ta funkcja zwróci jedynie nazwę pliku (explorer.exe). Dzięki temu zapobiegniemy includowaniu plików pochodzących z innych serwerów niż nasz. Dobrym sposobem na zabezpieczenie się przed dołączeniem pliku który w zamyśle programisty nie miał być dołączony, jest użycie instrukcji warunkowej switch i w zależności od wartości zmiennej includowanie odpowiedniego pliku. Przykładowy kod:
switch($_GET[‘inc’]){
case ‘wyswietl.php’ :
include(‘wyswietl.php’);
break;
case ‘logowanie.php’ :
include(‘logowanie.php’);
break;
default :
echo ‘Błąd: Niepoprawna nazwa pliku’;
break;
}
Dzięki temu prostemu sposobowi unikniemy dołączeniu do skryptu potencjalnie niebezpiecznego kodu.