Sicherheit: prepared Statement vs "gewöhnlichem" Statement

Sicherheit: prepared Statement vs "gewöhnlichem" Statement

am 12.10.2006 17:40:15 von muck

So, noch ein Thema, das auch vielleicht für andere interessant sein
könnte.

PDO bringt ja Prepared Statements mit.

Diese bieten ja mitunter Performance-Gewinne, aber das ist mir hier nur
2-wichtig.

meine Gedanken schweifen auch immer um Sicherheit, insbesondere das
Vermeiden von SQL-Injections.
Insbesondere advanced sql-Inj. (CHAR 27(?) und son Kram) macht mir
Kopfschmerzen, scheinbar finden die bösen Buben immer wieder Mittel
und Wege...

Ich habe irgendwo gelesen, dass PS grundsätzlich SQL-Inj.
ausschließen würden. Das wäre ja super.

Oder ist die Äußerung zu pauschal? Hat jemand gegenteiliges erfahren?

MfG

Markus

Re: Sicherheit: prepared Statement vs "gewöhnlichem" Statement

am 13.10.2006 22:26:41 von dafox

muck schrieb:
^^^^
Da haben dir deine Eltern aber einen komischen Namen gegeben :)

> PDO bringt ja Prepared Statements mit.

Jap.

> meine Gedanken schweifen auch immer um Sicherheit, insbesondere das
> Vermeiden von SQL-Injections.
> Insbesondere advanced sql-Inj. (CHAR 27(?) und son Kram) macht mir
> Kopfschmerzen, scheinbar finden die bösen Buben immer wieder Mittel
> und Wege...

Beispiel:

$username = chr(0xbf) . chr(0x27) . ' OR 1 /*';
$password = '';

// Escapen bringt nix, weil die Funktion das Encoding nicht beachtet...
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

....

Das funktioniert aber logischerweise nicht mit jedem Encoding.

> Ich habe irgendwo gelesen, dass PS grundsätzlich SQL-Inj.
> ausschließen würden. Das wäre ja super.

> Oder ist die Äußerung zu pauschal? Hat jemand gegenteiliges erfahren?

Grundsätzlich können dort natürlich auch Fehler enthalten sein, aber ich
habe bisher nichts dergleichen gehört oder gelesen. Wenn du PS nutzen
kannst, dann tu es.