rob: Formularfeld

Beitrag lesen

Hi!

Du solltest eine Abfrage einbauen, ob das Formular überhaupt abgeschickt wurde.

hast du mir dazu ein kleiner Gedankensprung?

if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
oder
if ( isset( $_POST['was_auch_immer'] ) )

Außerdem ist das Script so anfällig für einen Angriff mittels SQL-Injection.

  1. Wie könnte so ein Angriff aussehen?

Man trägt SQL-Code anstatt eines Namens in deinem Formular ein.
Hättest du mal eine Suchmaschine benutzt, dann hättest du zu diesem Thema bereits was gefunden.
Auch die Suche hier im Forum und/oder im Forumsarchiv hätte dir einige Treffer gebracht.
Wikipedia-Artikel "SQL-Injektion"

  1. Wie kann ich dies verhindern?

Du mußt _alle_ Variablen, die von außen kommen prüfen und bereinigen.
Nie, nie, niemals darfst du die Variablen ungeprüft in deine Abfragen einbauen!
Alle Variablen von außen müssen grundsätzlich als "böse" angesehen werden.
Hier habe ich auch was dazu geschrieben. Mußt mal dieses Posting durchlesen:
http://forum.de.selfhtml.org/archiv/2007/4/t150370/#m977240

Ich dachte um so  "einfacher, weniger Code" umso besser.....

Nein. Lieber ein paar zusätzliche Abfragen mehr einbauen.
Es muß auch nicht unbedingt ein Angriff auf deine Site sein.
Es kann auch immer sein, daß irgendwelche Deppen einfach Mist eingeben.
Also lieber eine DAU-Abfrage (DAU = Dümmster anzunehmender User) mehr einbauen als zuwenig.
Eine clientseitige Prüfung mit Javascript ist niemals ausreichend.
Du mußt alles serverseitig prüfen, bevor du was weiterverarbeitest.
Prüfe also z.B. ob in ein Namensfeld auch wirklich nur Buchstaben eingegeben wurden oder ob in einem Emailfeld auch wirklich eine gültige Mailadresse eingetragen wurde oder ob in einem Feld für eine Telefonnummer auch wirklich nur Zahlen und Zeichen wie /-() stehen, und so weiter und so fort...

Schöner Gruß,
rob