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