Sven Rautenberg: MySql-Zugriff auf bestimmteTabellen aus bestimmten PHP-Klassen

Beitrag lesen

Moin!

Das hier ist getestet - man kann ja statt der variablen die tabellen direkt angeben muss man halt für jede klasse eigene checkfuntion bauen:

<?php

$query = "SELECT * FROM sds"; // gibt 0 zurück
$query = "SELECT * FROM abc"; // gibt 1 zurück
$query = "SELECT * FROM def"; // gibt 1 zurück
$query = "UPDATE abc"; // gibt 1 zurück

if (preg_match("#^(SELECT|UPDATE|INSERT)\s(*\s)?(INTO|FROM)?\s?(abc|def)(.*)$#im", $query)) {
echo "1";
}
else echo "0";

?>

  
Der Ansatz ist Irrsinn. Wenn du im REGEX vorformulierst, dass IMMER "SELECT \* FROM" kommen muss, gefolgt von bestimmten Zeichen als Tabellenname, gefolgt von beliebigen Zeichen, dann hast du mit exakt diesen beliebigen Zeichen am Ende des Querys die SQL-Injection-Lücke!  
  
$query = "SELECT \* FROM abc UNION SELECT \* FROM anywhere"; // gibt 1 zurück #FAIL  
  
Noch Fragen?  
  
 - Sven Rautenberg