Hallo, ich habe ein kleines Problem mit den Sicherheitsfunktionen von PHP:
Anscheinend gibt es in den PHP Konfigurationsdateien eine Einstellung, mit der verhindert werden kann, dass $_GET Variablen in mysql Queries eingebaut werden um so Sicherheitslöcher zu stopfen. Im Prinzip eine sehr löbliche Maßnahme, da viele der Leute die Variablen, die vom Browser kommen nicht genug überprüfen.
Mein Hoster hat seit neuestem eine derartige Funktion aktiviert und nun funktionieren meine ganzes CMS nicht mehr, weil die einzige Variable, die vom Browser übertragen wird (Seiten-id) nicht mehr in ein mysql Query eingebaut wird. Er gibt keine Fehlermeldung zurück, sonder einfach einen leeren Datensatz, Und das obwohl sämtliche Browservariablen geprüft und ecaped wurden. Inzwischen war ich schon richtig kreativ, um das Problem zu lösen - hab aber noch keinen Erfolg gehabt.
obwohl ich alles per escapeshellcmd(), is_integer, is_numeric überprüfe, akzeptiert er das nicht. //WIe gehts richtig - bzw wie muss ich die Variablen bearbeiten/überprüfen, damit er sie anerkennt?//
Ich hab auch schon überlegt mit regulären Ausdrücken zu arbeiten, aber ich glaube das wird genauso wenig funktionieren...
hier nochmal ein kleines Beispiel, was nicht geht:
$foo = escapeshellcmd($_GET['muh']);
if (is_numeric($foo))
{
print_r($db->fetch_array("SELECT * FROM " . MYSQL_PREFIX . "_entities WHERE pid = '" . $foo . "' LIMIT 1"));
}