Hallööchen ;)
folgendes: Ich hab hier im Forum so einige Codebeispiele gesehn, wos mir schon fast den Magen umdreht..
Grund? Fehlende Sicherheit..
Zu beginn hier mal ein toller xkcd Sketch, der das ganze verdeutlicht:
http://xkcd.com/327/
Wollt ihr den selben Fehler machen? Nein? Dann los.
Ich garantiere euch jedoch keine vollständige Sicherheit. Das ganze sind nur Tipps um die Sicherheit zu vergrößern.
Daten aus einem Formular holen
Benutzt nie zur Weiterverarbeitung von Daten aus Formularen direkt $_GET oder $_POST.
Holt euch am Anfang des Scripts die Daten aus den Arrays und validiert sie.
Im Klartext: Soll es eine Zahl sein, sorgt auch dafür das es eine Zahl ist. Ist es ein Text, schneidet wenigstens Leerzeichenüberhang usw. ab.
Umsetzung:
Datenbankabfragen
Direkt in einer Datenbankabfrage $_GET oder $_POST zu verwenden ist schon fast das Todesurteil ;)
Strings in einem Query sind heikel. Wie auch in dem Sketch kann man wenn der Entwickler nicht aufgepasst hat direkt einfluss auf das Query nehmen. Deswegen benutzt mysql_real_escape_string() um euren Query vor bösen Strings zu schützen.
Doppelt hält besser. Irgendwo wird sich eine kleine Unachtsamkeit einschleichen.. Um dem entgegenzuwirken benutzt wenn ihr Zahlen einfügt nochmal intval().
Umsetzung:
$sql = sprintf("SELECT * FROM user WHERE username = '%s' AND password = '%s' AND irgendeineZahl = %d", mysql_real_escape_string($username), mysql_real_escape_string($password), intval($zahl));
Tipp: legt euch einen alias an, damit ihr nicht so viel Tippen müsst.. zB:
Das wars erstmal. Wenn mir noch was einfällt, häng ich es noch an ;)