Entwickler-Ecke
Datenbanken - PREPARE Statement
Aya - Do 07.07.11 08:16
Titel: PREPARE Statement
Hi,
es gibt im MySQL ja dieses PREPARE:
http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html
Weiß jemand ob das SQL Injection sicher ist?
Also wenn ich z.B. hier:
PREPARE stmt1 FROM 'SELECT * FROM customers WHERE name = ?';
SET @a = [userinput];
EXECUTE stmt1 USING @a;
Ist es hier noch moeglich SQL Injections zu machen indem man z.B. irgendwie 'SELECT irgendwas' oder 'DELETE..' als UserInput bekommt?
Aya
BenBE - Do 07.07.11 12:10
Sofern Du deine Parameter z.B. direkt über die API und nicht als SQL-Befehl setzt, sind Prepared Statements gegen SQL-Injections geschützt.
Hintergrund ist der, dass man durch die Parameter SQL schon im Vorfeld mitteilt, wo Parameter sind und somit eine Durchmischung von verschiedenen Programmkontexten (Code und Daten) vermeidet.
Bei deinem Beispiel wäre die SET-Zeile angreifbar. Dafür gibt es aber in PHP eine direkte Funktion (mysql_bind_param), mit der das vermieden werden kann.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!