Gefährliche inserts !? :mad:
-
Hallo zusammen,
wenn Ihr ein Formular habt, wo z.B. ein Textfeld ist,
kann es da nicht passieren, das da einer so etwas in der Art von:
select oder insert oder drop database rein schreibt und wenn er das noch richtig anstellt, dan funktioniert das auch ?.Also meine Frage muss ich jedes Textfeld auf "gefährliche" Wörter untersuchen ?? bevor ich es in die Datenbank prügele ?
Oder gibt es vielleicht eine einfachere Lösung ?
-
Hi,
da brauchst du dir IMHO keine Gedanken zu machen, da du das ganze der Datenbank ja als String übergibst und dieser von ihr nicht interpretiert, sondern einfach in die Zelle gespeichert wird.
mfg
Arskane
-
beim Insert würde das ja z.B. so aussehen
$query ="insert into daten (text) values (; drop database )";
mysql_query($query);
???
Ich möchte ja den Text, der eingegeben wurde schon gerne in die Datenbank packen.
(Ich habe von soetwas schon einmal gehört beim LOGIN z.B.)
-
Hi,
so kannst du das aba nich in die Datenbank schreiben, das gibt mit Sicherheit nen Fehler. Du musst den Text als String übergeben. Also so:
INSERT INTO daten (text) VALUES ("DROP DATABASE ganz_wichtig")
mfg
Arskane
-
Wie sieht es mit folgender Eingabe aus
" ; drop database ;"
$query ="insert into daten (text) values (""; drop database" )";
schau Dir mal folgendes an :
http://www.aspheute.com/artikel/20011030.htmDaher kommen meine Bedenken ....
-
Hi,
aso, na das iss auch kein Prob, dann lässt du vorher addslashes(...) drüber laufen und dann werden u.a. alle " durch \" ersetzt.
mfg
Arskane
-
Supi Danke Dir
-
Arskane schrieb:
aso, na das iss auch kein Prob, dann lässt du vorher addslashes(...) drüber laufen und dann werden u.a. alle " durch \" ersetzt.
nein, mysql_escape_string()
-
Hi,
addslashes genügt völlig. Ich zitiere aus der www.php.net zu addslashes:
Die behandelten Zeichen sind der einfache und der doppelte Anführungsstrich (' und "), der Rückstrich (\) selbst sowie NUL (das Null-Byte).
mfg Arskane
-
Arskane schrieb:
addslashes genügt völlig.
Vielleicht genügt es in 99% der Fälle - aber mysql_escape_string ruft die interne MySQL Funktion auf - es ist also _garantiert_ sicher. (Auch für die Zukunft falls neue MySQL Features addslashes überlisten).
-
Hi,
jo, hast recht, mysql_escape_string iss besser, habs grad auch noch mal im Manual nachgelesen.
mfg
Arskane