Ronda: $PHP_AUTH_USER

Hallo,

Meine index.php includet alle Seiten die mit ?page=name an index.php angehängt werden.
Also zb index.php?page=hallo - dann wird in index.php die Datei hallo.php includiert sofern sie vorhanden ist. wenn nicht wird automatisch die error.php includiert.

Nun möchte ich noch einen Login Bereich machen und der soll mit htaccess funktionieren.

die zu schützenden Dateien sollen auch includiert werden.

jetzt hab ich mich gefragt wie ich den sicheren schutz von .htaccess und die einfache Handhabung von includes verbinden kann. meine Idee war

$PHP_AUTH_USER

angenommen die Datei schutz.php darf nicht ohne htaccess Anmeldung includiert werden was ja mit index.php?page=schutz normalerweise möglich wäre.

nun baue ich in die index.php einfach die abfrage ein ob $PHP_AUTH_USER nicht leer ist und schon kann ich die Schutz.php zum includieren frei geben

zusätzlich liegt Schutz.php im Verzeichnisse /schutz die durch eine htaccess Datei geschützt wird. so dass man nicht normal drauf zugreifen kann.

ist diese Methode gewagt?
welche nachteile könnten auftreten?

MfG Ronda

  1. hi,

    Meine index.php includet alle Seiten die mit ?page=name an index.php angehängt werden.
    Also zb index.php?page=hallo - dann wird in index.php die Datei hallo.php includiert sofern sie vorhanden ist. wenn nicht wird automatisch die error.php includiert.

    schon das ist recht gefährlich, weil man damit u.U. auch dateien einbinden kann, an die du bisher noch gar nicht gedacht hast - im schlimmsten fall sogar externe dateien.

    ist diese Methode gewagt?
    welche nachteile könnten auftreten?

    ich finde sie vollkommen ungeeignet. HTTP AUTH ist dazu da, die authentifizierung beim zugriff über HTPP zu regeln - aber du hast ja überhaupt nicht vor, auf die betroffenen dateien über HTTP zuzugreifen.

    warum also machst du stattdessen nicht einen "normalen" login, bei dem _dein script_ username und passwort auf gültigkeit prüft, und andernfalls das einbinden bestimmer include-dateien einfach verweigert?

    schutz der include-dateien vor dirketaufruf solltest du natürlich zusätzlich implementieren, ob per HTTP AUTH oder anderweitig (z.b. ablage oberhalb des webroots) ist eher nebensache.

    gruss,
    wahsaga

    1. Über die Methode wie du Sie dort aufführst, ist es evtl. möglich sogar Systemdateien einzubinden. Ein paar versuche und schon kann man über relative oder absolute pfade auf /etc zugreifen...

      Ich würde dir empfehlen die variable page in einem Switch abzufangen, der dann die dateinamen zuweist oder "default" auf die errorseite linkt. Damit bist du von dieser seite her schon mal aus dem schneider...

      Was das Includen der Dateien angeht:
      Leg alle Dateien in einen Ordner, der über HTTP nicht erreichbar ist. Include kann auch auf tieferliegende Verzeichnisse zugreifen und du kannst so deinen Usern die Datenen includen...

      Damit bist du um alle Sicherheitslücken im gröbsten rum, wichtig ist, dass deine Login sauber aufgebaut ist und dort keine Löcher mehr entstehen :)

      Gruss,
      Stefan

    2. Hi,

      schon das ist recht gefährlich, weil man damit u.U. auch dateien einbinden kann, an die du bisher noch gar nicht gedacht hast - im schlimmsten fall sogar externe dateien.

      Dann speichere ich eben eine Whitelist ab welche Dateien überhaupt includiert werden dürfen.

      Was ist gibt es denn dann noch für Tricks?
      Ich würde die zu schützenden Dateien echt liebend gerne mit ins Design integrieren und mit frames sieht das so blöd aus und ist mega umständlich. wenn ich doch eine Whitelist habe kann ich doch auch pwd-Dateien includen die auch in der Whitelist stehen aber auch in der pwd-List sag ich mal so.
      Ist es denn möglich die $PHP_AUTH_USER irgendwie zu manipulieren?

      MfG Ronda

      1. hi,

        Dann speichere ich eben eine Whitelist ab welche Dateien überhaupt includiert werden dürfen.

        zum beispiel.

        Was ist gibt es denn dann noch für Tricks?

        wofür brauchst du denn jetzt noch "tricks"?

        Ich würde die zu schützenden Dateien echt liebend gerne mit ins Design integrieren und mit frames sieht das so blöd aus und ist mega umständlich.

        warum machst du es dann nicht so, wie ich sagte?
        lass deine index.php die userdaten kontrollieren, und die seiten, die in deiner whitelist das zusätzliche kennzeichen "geschützt" haben, bindest du eben nur dann ein, wenn der user sich authentifiziert hat.

        gruss,
        wahsaga

        1. Hi,

          lass deine index.php die userdaten kontrollieren, und die seiten, die in deiner whitelist das zusätzliche kennzeichen "geschützt" haben, bindest du eben nur dann ein, wenn der user sich authentifiziert hat.

          Ja das meinete ich ja so schon von anfang an (bis auf die Whitelist, OK); Gut wenn es ansonsten keine Haken mehr gibt... Alles Klar!

          THX