Hans: SQL Injection in PostgreSQL verhindern

Beitrag lesen

Hallo,
ich möchte eine Applikation mit PostgreSQL und PHP schreiben und möchte zuerst einmal die Sicherheit abklopfen (newbe ;-).

Wenn ich Variablen auf einer Seite entgegennehme um diese in meinem SQL zu verwenden will ich natürlich SQL Injecten verhindern. Dazu habe ich z.B. folgende Funktion gefunden:

  
//injection Test  
function SQLInjectionTest($checkstring){  
	$sqltest = array ("/SELECT.*FROM.*WHERE/i",  
	"/INSERT.*INTO/i",  
	"/DELETE.*FROM/i",  
	"/UPDATE.*WHERE/i",  
	"/ALTER.*TABLE/i",  
	"/DROP.*TABLE/i",  
	"/CREATE.*TABLE/i",  
	"/substr/i",  
	"/varchar/i",  
	"/or.*\d=\d/i",  
	"/and.*\d=\d/i");  
	foreach ($sqltest as $regex){  
		if (preg_match($regex, $checkstring)){  
			return TRUE;  
		}  
	}  
	return FALSE;  
}  

Damit überprüfe ich zunächst die Get Variable auf Schadcode und ecsape danach noch den String mit htmlspecialchars.

  
if (SQLInjectionTest($_GET['service'])){  
	echo "<h1> Unerlaubte Eingabe! </h1>";  
	exit(0);  
}  
  
$sqlString = "SELECT * FROM mytab WHERE service ='".htmlspecialchars($_GET["service"])."'";  
$result_service = pg_query($dbconn , $sqlString) or die('Connection failed (pg_query): ' . pg_last_error());  
  

Wäre das so schon ausreichend gesichert oder muss ich das anders machen?
Danke für Eure Hilfe!
Hans