Filtrowanie Danych w PHP

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code
 

This site uses Akismet to reduce spam. Learn how your comment data is processed.