Der Martin: Sicherheit: MySql-Injection und Zugriff "von aussen"

Beitrag lesen

Hallo,

Mein momentaner Infostand: bei Benutzung von mysql_real_escape_string() ist eine mysql-injection praktisch ausgeschlossen?

wenn man es richtig[tm] und kosequent anwendet - vermutlich ja.

Dann erst recht: Nach erfolgreichem Login nicht wieder irgendwohin umleiten, sondern direkt unter derselben Adresse das Dokument ausliefern.
Missverständnis. Es wird nicht NACH einem Login umgeleitet, sondern nur dann, wenn man versucht über z.B. Bookmarks auf nicht-öffentliche Seiten zu gelangen.

Auch dann ist keine Umleitung erforderlich.

Ein Mitglied loggt sicht ein und surft nun im Mitgliederbereich, meinetwegen auf der Unterseite "angebote.php", auf welcher eben Angebote und Einkaufspreise angezeigt werden. Die Einkaufspreise dürfen aber nur registrierte User sehen, die sich eben vorher eingeloggt haben. Dieses Mitglied setzt nun ein Bookmark, also einen Link unter Favoriten auf genau diese Seite und loggt sich aus. Einen Tag später will es über diesen Bookmark auf diese Seite zugreifen (ohne eingeloggt zu sein). Und JETZT soll eine Umleitung auf die index.php (Startseite) stattfinden, wo sich das Loginmodul befindet.

Und das ist ungünstig: Du hast eben irgendwo erwähnt, dass das Login-Formular auf jeder Seite sichtbar ist. Also zeige doch an der Stelle, wo die für nicht angemeldete Besucher "verbotene" Information stehen soll, einfach einen entsprechenden Hinweis an: "Um diese Information sehen zu können, müssen Sie sich anmelden."
Dann kann der registrierte Besucher das auf *genau dieser* Seite tun und ist nach dem Login auch genau wieder an der Stelle, wo er eigentlich hin wollte.

Nicht direkt über HTTP. Ein PHP-Script, das seinerseits erreichbar ist, kann natürlich darauf zugreifen und sie dennoch ausliefrn.
So habe ich es mir auch vorgestellt. Sähe also so aus: z.B.
Ordner "domain" = DocumentRoot; Inhalt: index.html
Ordner "mitglieder" = kein Zugang über HTTP; Inhalt: angebot.php

Das ergäbe IMHO keinen Sinn und widerspricht auch deiner restlichen Beschreibung.

Im Ordner "mitglieder" befindet sich eine htaccess-Datei, die also den Zugriff auf Dateien im gleichen Ordner verbietet und auf index.html umleitet, auch wenn darauf ein Bookmark gesetzt ist.

Und dann? Wie willst du angebot.php je erreichen?

Nein, "über HTTP nicht erreichbar" heißt genau das: Nicht erreichbar.
Nehmen wir als Beispiel an, dein Webhoster würde die Web-Verzeichnisse seiner Kunden in /var/www/kundennummer/htdocs organisieren. .../htdocs entspräche dann dem Document Root http://example.org/, aber als Kunde hast du (z.B. per FTP) auch schon den Zugang zu .../kundennummer. In diesem übergeordneten Verzeichnis, das per HTTP nicht erreichbar ist (!), kannst du beispielsweise Passwortdateien oder Konfigurationsdaten für PHP-Projekte hinterlegen, die auf keinen Fall ein Besucher -ob angemeldet oder nicht- in die Finger kriegen soll.

Was du hier ansprichst, ist ja schon eine Ebene weiter: In dem Moment, wo du in der Lage bist, dem Besucher ein Login-Formular zu präsentieren oder ihm ein "Du kommst hier net rein" an den Kopf zu werfen, ist der HTTP-Zugriff aus technischer Sicht ja schon erfolgreich abgeschlossen.

So long,
 Martin

--
I do take my work seriously and the way to do that is not to take yourself too seriously.
  (Alan Rickman, britischer Schauspieler)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(