Hallo zusammen,
ich habe ein Anmeldeformular welches vor dem eintragen in die Datenbank auf bestimmte Kriterien überprüft wird. Erst wenn die Kriterien erfüllt sind, dürfen die Daten in die Datenbank eingetragen werden.
Gibt es eine Möglichkeit diese letzte Script zu überlisten und mit einer anderen Methode trotzdem Daten in die Datenbank einzutragen? Wenn ja, wie kann ich das verhindern?
Gruß Frank
Hallo Frank,
so pauschal kann man das nicht sagen, es kommt ganz darauf an, wie und an welchen Stellen das Script was überprüfst. Wichtig ist in jedem Fall, dass das die Daten nach der letzten Übermittlung geprüft werden (was du aber vielleicht schon mit dem Ausdruck "letztes Script" meinst?). Darüber hinaus können Überprüfungen aber auch fehlerhaft oder unzureichend sein. Das müsste man dann am konkreten Beispiel diskutieren
Hi Jörg,
also das letzte Script führt erst dann das Eintragen in die Datenbank aus, wenn die vorherigen Kriterien stimmen! Das klappt auch wunderbar!
Eigentlich sollte es nur beim aufrufen der letzten Seite nicht funktionieren, da die benötigten Angaben zum absenden sich individuell in den vorherigen Seiten befinden.
Daher meine Frage ob man per CGI o.ä. trotzdem einen Eintrag vornehmen könnte?
Gruß Frank
Das häbngt davon ab, ob deine Scripte Sicherheitslücken aufweisen - ob diese z.B. ausreichend gegen SQL-Injections gesichert sind, oder ob sich interne Variablen von außen einfügen lassen.
Ein paar Sicherheits-Grundregeln:
- initialisiere alle Variablen die Du verwendest (geht bei PHP ganz schnell, weil es Mehrfachzuweisungen zulässt, z.B. $a = $b = $c = NULL)
- kein eval und solcher Mist, besonders nicht in Verbindung mit Benutzerdaten
- vertraue in keine Benutzereingaben; Benutzereingaben sind grundsätzlich ein Sicherheitsrisiko :) Dazu gehören nicht nur gepostete Formulardaten, sondern auch GET- und Cookie-Parameter.
deshalb:
- prüfe alle Typen der Benutzereingaben (am besten über zentralisierte Prüffunktionen, das minimiert die Fehler)
- escape alles, was Du irgendwie als string in eine Datenbankoperation (query) einbeziehst (mysql_real_escape_string)
Hi Rudy,
- prüfe alle Typen der Benutzereingaben (am besten über zentralisierte Prüffunktionen, das minimiert die Fehler)
- escape alles, was Du irgendwie als string in eine Datenbankoperation (query) einbeziehst (mysql_real_escape_string)
kannst Du mir das genauer Erklären? Da stoße ich an meine Grenzen! :-)
Gruß Frank
- prüfe alle Typen der Benutzereingaben (am besten über zentralisierte Prüffunktionen, das minimiert die Fehler)
Auf SELFHTML ist beispielhaft eine Funktion zur Prüfung der Gültigkeit von Emailadressen aufgeführt (unter PHP):
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/email/
- escape alles, was Du irgendwie als string in eine Datenbankoperation (query) einbeziehst (mysql_real_escape_string)
Zu mysql_real_escape_string() findest du auf php.net eine Erklärung mit Beispielen:
http://de.php.net/mysql_real_escape_string