Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zabezpieczanie zmiennych GET i POST
Forum PHP.pl > Forum > Przedszkole
lsrtb
Witam.

Kiedyś uczyłem się PHP od podstaw, potem naukę porzuciłem i zamierzam wrócić. Kiedyś stworzyłem takie coś:

  1. function var_filter($variable_type, $variable, $mres, $addslashes, $strip_tags)
  2. {
  3. if($variable_type == 'post') $var = $_POST[''.$variable.''];
  4. else if($variable_type == 'get') $var = $_GET[''.$variable.''];
  5. if($strip_tags == 1) $var = strip_tags($var);
  6. if($addslashes == 1) $var = addslashes($var);
  7. if($mres == 1) $var = mysql_real_escape_string($var);
  8. return $var;
  9. }
  10.  
  11. $get_confirm = var_filter('get', 'confirm', 1, 1, 1);


Było to moje "super zabezpieczenie" zmiennych GET i POST. Wiem, że nie ma to nic wspólnego ze standardami czy bezpieczeństwem, dlatego chcę wszystko poprawić.

Otóż jak zabezpieczyć zmienne GET i POST na mojej całej stronie, tak aby nie można było dodać żadnego złośliwego kodu, ataku SQL Injection itd. ?

Wystarczy po prostu mysql_real_escape_string($var) i będzie wszystko 100% bezpieczne?

Dodam, że zmienne często są w zapytaniach SQL. W zmiennych POST/GET będą używane tylko litery alfabetu duże/małe, cyfry, spacja i średnik.
Tomplus
poczytaj o PDO i wstrzykiwaniu zmiennych do zapytań np.:
  1. $mysql->bind('id', $_GET['id']);
  2. $mysql->exec("SELECT * FROM my_base WHERE id= :id");

bobek358
Tak jak kolega pisze tylko PDO i bindowanie wszystkich parametrów.
Dodatkowo możesz stosować:

strip_tags oraz htmlspecialchars w celu zabezpieczenia przez xss

mysql_real_escape_string - tego już nie używamy bo w wersji 7 PHP nie będzie już mysql_query tylko PDO i MySQLi.
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.