Sub: PHP / MySQL Sicherheit

Beitrag lesen

Hi suit,

vielen Dank für Deine Antwort.

Das hört sich nicht "nett" gegenüber dem Endbenutzer an.

So verhindere ich dass das Script unerwartete Parameter erhält und auch dass Pflichtfelder fehlen. Geblockter Endbenutzer wäre in diesem fall ja eh nur derjenige (z.B. ein Bot) der mit falschen Formular versucht auf mein Script zuzugreifen! Zu solchen Endbenutzern müssen wir doch nicht nett sein, oder doch? ;-)

Siehe hierzu bitte den Beitrag: http://forum.de.selfhtml.org/archiv/2009/5/t187309/

Nicht wirklich - "deadbeef" ist z.B. numeric.

Shit, Du hast recht:

0xDEADBEEF ist numerisch, wie auch  0xFFD8FF, ich nehme an alle Magischen Zahlen zur Kennzeichnung von Dateitypen. Auch wenn man das EADBEEF wegnimmt ist es immer noch numerisch!

Ich bin platt, das hätte ich so nicht erwartet!
Also is_numeric scheidet für meine zwecke schon mal aus.
Ich schaue mir aber morgen noch ctype und reguläre Ausdrücke wie preg_match an!

Entsprechend maskieren, wie schon gesagt - kontextgerecht behandeln. PHP sieht hierfür eben mysql_real_escape_string() vor.

Ich kann es echt nicht glauben das es nur mysql_real_escape_string() ist, und dafür schlage ich mir mehrere tage um die Ohren und wäre beinahe reif für das Irrenhaus geworden! :-)

Was hat's mit BINARY aufsich?

BINARY habe ich gesetzt damit auf Groß und Kleinschreibung geachtet wird!

Warum $_POST[‘eve’] und nicht $_POST['eve']?

Sorry, ich habe den Code vorher in MS-Word kopiert, hier wird wohl der Fehler entstanden sein!

Besser nicht, aber übersichtlicher. Für das gibt es aber bereits vorgefertigtigte Funktionen (sprintf() z.B.).

So zum Beispiel?

$query = sprintf("SELECT user,password FROM users WHERE user='%s' AND password='%s'",
           mysql_real_escape_string($user),
           mysql_real_escape_string($password));

Viele Grüße,

Sub