Einzelnen Beitrag anzeigen

Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#50

Re: mysql abfrage rückgabewert

  Alt 1. Dez 2008, 15:04
Zitat von Delphi-Phil:
danke an xong das du mich so ausdrücklich auf die sicherheit hinweißt!!
Wirklich toll von Dir!!
=)
Ist ja auch gar nicht böse gemeint. Aber bei sowas muss man immer mit Nachdruck schreiben, damit´s auch wirklich hängen bleibt. Ich habe schon so viele Seiten gesehen, auf denen Sachen wie "This site was hacked by..." standen.
Außerdem können solche Seiten den zugrundeliegenden Server zu Spamschleudern machen und dann kannst du sogar rechtliche Probleme bekommen.

Zitat von Delphi-Phil:
Muss ich diesen Code den auch so schützen?

$sql1 = "UPDATE nl_anmeldungen SET bestaetigung = 'true' WHERE md5wert = '$hash'";
Also...
Du musst alles schützen, was von außen kommt, also alles was nicht in deinem Skript definiert wird.

Beispiel:
Du hast im HTML sowas stehen:
Code:
<label for="name">Name:</label> <input type="checkbox" name="name" id="name" />
Im PHP setzt du dann folgende SQL-Abfrage ab:
Code:
mysql_query("INSERT INTO table (name) VALUES('".$_POST['name']."')")
Was glaubst du, was passiert, wenn in Name '); DROP TABLE table;-- steht?

Du würdest folgenden Code an die Datenbank schicken: INSERT INTO table (name) VALUES(''); DROP TABLE table;--') Es wären noch viel schlimmere Dinge möglich. Jemand könnte versuchen Zugriff auf deine Datenbank zu bekommen, indem er die Passwörter ändert.
Vielleicht sogar so, dass du es gar nicht merkst, indem er einfach nur einen neuen Benutzer hinzufügt. Viels ist möglich. Und du musst das verhindern.

Richtig wäre in PHP folgendes:
Code:
mysql_query("INSERT INTO table (name) VALUES('".mysql_real_escape_string($_POST['name'])."')")
Dann wird nämlich INSERT INTO table (name) VALUES('\'); DROP TABLE table;--)' abgeschickt und alles wäre in Ordnung.


Merke: All Input Is Evil!

LG,
Xong
  Mit Zitat antworten Zitat