Mailinglisten-Archive |
> >$query = 'SELECT * FROM '.$entries.' WHERE cat LIKE BINARY > >"%'.mysql_escape_string($_GET['cat']).'%" ORDER BY id DESC'; > >(mit ' um das cat) > > Warum mysql_escape_string, dafür gibt es doch magic_quotes_gpc oder > liege ich da jetzt falsch. Ich bin momentan am überlegen, da ich in > vielen PHP Skripten direkt bei z.B. Suchen $_REQUEST["Suchwort"] in den > Query-String eingebaut habe. Wenn ich nach "'; DROP ALL" suche, dann > passiert aber nichts mit meiner Datenbank. > Wie handle ich nun soetwas korrekt und sicher? also magic_quotes_gpc ist ja nur ein automatisches addslashes auf alle GPC-daten, die reinkommen, mehr nicht mysql_escape_string dagegen escaped zeichen, die die query zerstören oder mit fiesen sql-kommentar-zeichen verändern können .. und das sind weit mehr zeichen als der backslash ... mach einfach bei jeder variable, die du nicht explizit validiert hast, ein mysql_escape_string, damit ist aber auch nur das *gröbste* erledigt ... um eine ausführliche validierung kommst du eigentlich nicht drumherum, meistens reicht ja schon ein $param = (int)$_GET['param']; damit du auch wirklich einen integer erhälst ... kai
php::bar PHP Wiki - Listenarchive