Hello,
ich bin mir nicht ganz sicher, aber selbst bei MySQL und PostgreSQL mit PHP gibt es Prepared Statements. Setzt man diese ein, kann so gut wie nie eine SQL-Injection stattfinden.
okay, PreparedStatements schaffen schneller Abhilfe.
Desweiteren würde eine SQL-Injection bei PostgreSQL auch nicht so leicht wie bei MySQL funktionieren. MySQL - quasi der Internet Explorer unter den Datenbanken - meint, dass geöffnete Kommentare (SQL-Injection) automatisch geschlossen werden müssen, was die SQL-Injection ja erst ermöglicht.
meinst du wirklich, dass automatisch geschlossene Kommentare das Problem sind. Vielleicht sind sie eines, aber bestimmt nicht das.
Wie wäre es mit
SELECT * FROM users WHERE name = '$name' AND password = '$password' und du gibst als Passwort
' OR 1=1 OR password='
an? Du erhälst
SELECT * FROM users WHERE name = '...' AND password = '' OR 1=1 OR password=''
ein Statement, dass die alle User zurückliefert.
SELECT name FROM tabelle /* where password=xxxx;
PostgreSQL würde das Statement als fehlerhaft werten und nichts liefern.
warum sollte es das tun, das ist syntaktisch ein komplett korrektes Statement. Es liefert alle Datensätze der Tabelle zurück.
MfG
Rouven
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#