Zitat:
Ich blicke bei den ganzen Anführungszeichen nicht so ganz durch - kannst du ein konkretes Beispiel ohne zusätzliche Anführungszeichen machen.
In Deinem Feld für Benutzername würde ich nur dummy Werte eingeben z.B. xx
Beim Passwort genau diese Zeichenkette : 'XX' OR (username LIKE '%ADMIN%' AND passwd LIKE '%')
Die Hochkomma sind Notwendig, da er die gesamte Zeichenkette quasi als Passwort an das
SQL anhängt. Damit würde Dein eigentliches
SQL veränder werden. Wenn Du es als String ausgebe lässt, sieht es dann so aus
SELECT id FROM user WHERE username= 'xx' AND passwd = 'XX' OR (username LIKE '%ADMIN%' AND passwd LIKE '%')
Durch das OR wird die eigentliche Passwort/User Abfrage aufgehoben.
Das
SQL würde genau so an die Datenbank geschickt.
Mit prepared und Parameter solltes es so wie oben beschrieben eigentlich nicht mehr möglich sein. Da für kenne ich aber php zu wenig.
Wie gesagt ich würde immer eine SP vorziehen. Da bist Du auf der sicheren Seite.
Das Könnte dann so aussehen
SQL-Code:
CREATE PROCEDURE SP_LOGIN (
USERNAME VARCHAR(40),
PW VARCHAR(40))
RETURNS (
ID INTEGER)
AS
BEGIN
SELECT ID
FROM USER
WHERE username = :USERNAME
AND passwd = :PW
INTO :ID;
SUSPEND;
END
Das hatte ich noch vergessen. :-(
Und in Deinem Programm so aufrufen
SELECT ID FROM SP_LOGIN(USERNAME,PW)
Gruß Hartmuth