login und sichere weiterleitung zu einem verzeichnis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • login und sichere weiterleitung zu einem verzeichnis

    Hallo,

    ich wollte für meinen webserver, den ich teile folgendes realisieren:

    auf einer Seite wird ein login ermöglicht.
    Das Formular auf dieser Seite wird an die login-Seite gesendet und auf richtigkeit überprüft. Die Benutzer haben jeweils ein Verzeichnis, welches sie durchforsten können.
    nun wollte ich es aber verhindern, dass ein Benutzer durch manipulation der url an die anderen verzeichnisse herankommt.

    das problem ist nun folgendes
    nach erfolgreichem login führe ich dies aus:
    PHP-Code:
    $location "www.xxx.de/?dir=".$verzeichnis;
    header($location); 
    Nun kann aber auch nach erfolgreichem Login einfach die Url direkt angegeben werden und die Verzeichnisse werden ausgelesen.
    gibt es eine Möglichkeit mit php sachen per POST zu senden? denn mit:
    PHP-Code:
    $dir $HTTP_POST_VARS['dir']; 
    könnte ich ja zum Beispiel abfragen, ob die variable per POST übergeben wurde und wenn ja, dann darf das Verzeichnis angezeigt werden..

    hat jemand da eine idee wie so was möglich ist?

  • #2
    Re: login und sichere weiterleitung zu einem verzeichnis

    Original geschrieben von poedder
    gibt es eine Möglichkeit mit php sachen per POST zu senden? denn mit:
    $dir = $HTTP_POST_VARS['dir'];
    könnte ich ja zum Beispiel abfragen, ob die variable per POST übergeben wurde und wenn ja, dann darf das Verzeichnis angezeigt werden..
    das macht die sache kein bisschen sicherer - auch ein POST-request lässt sich leicht fälschen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      hmm,

      wie könnte ich denn dann jedem benutzer ein verzeichnis zuweisen und abfragen, ob er in dessen unterverzeichnissen auch zugriff hat?

      eine idee wäre es evtl das root verzeichnis zu definieren und dann per split die url zerstückeln und schauen ob das hauptverzeichnis mit in der url ist und wenn ja dann ist dies erlaubt?

      Ist sicher kein schöner weg, oder?

      Kommentar


      • #4
        Original geschrieben von poedder
        wie könnte ich denn dann jedem benutzer ein verzeichnis zuweisen und abfragen, ob er in dessen unterverzeichnissen auch zugriff hat?
        über HTTP AUTH per .htaccess zum beispiel.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          cool, danke wahsaga, gefällt mir.


          viele grüsse und noch nen tollen tag

          patrick

          Kommentar


          • #6
            Also ich hab gestern erst nach einer ähnlichen Möglichkeit gesucht und eine relativ gute gefunden! Genau wie wahsaga würde ich es über PHP_AUTH versuchen.

            Prinzip ist ganz einfach:
            PHP-Code:
            # Das würde ich alle Dateien in deinem "geschützen" Vereichnis einfügen

            if(!isset($_SERVER['PHP_AUTH_USER'])) {
                
            header("Location: index.php");
                exit;

            So, damit wird jeder user der erst einmal nicht angemeldet ist auf die index.php weitergeleitet, wo dann auch das Anmeldeformular stehen sollte.
            In deinem Fall müsstest du wahrscheinlich auch das aktuelle Verzeichnis irgendwie mit abfragen.

            Um das schöne Anmeldeformular des Browsers zu bekommen musst du in der index.php einfach das hier einfügen. (Was unter dem Feld benutzer eingegeben wurde kannst du mit $_SERVER['PHP_AUTH_USER'] aufrufen, dass PW mit $_SERVER['PHP_AUTH_PW'])
            PHP-Code:
            header("WWW-Authenticate: Basic realm=\"Text für dein Anmeldeformular\"");
            header("HTTP/1.0 401 Unauthorized");
               echo 
            "Deine Anmeldetaten waren nicht korrekt!"
            So, jetzt bekommt der User den Anmeldedialog und muss ihn ausführen, ansonsten wird der echo Befehl ausgeführt. Jetzt musst du nur noch dein Anmeldeskript machen. Viel Text, klingt wahnsinnig kompliziert, ist aber eigentlich super einfach. Und eigentlich auch super sicher.
            Auch wenn ich mir nicht sicher bin ob das hier so die richtige lösung ist, aber ich denke, dass die auf jedenfall nicht schlecht sein sollte!

            Servus, schönen Abend noch!
            Flo
            Selbst der dümmste Mensch ist nicht nutzlos.
            Er kann immernoch als schlechtes Beispiel dienen!

            Kommentar


            • #7
              hi,
              ich hab mir das mal angeschaut und bin zu folgendem script gekommen.
              $user_db und $pass_db werden in der php_auth_inc.php aus einer
              datenbank ausgelesen.
              PHP-Code:
              <?
              include('php_auth_inc.php');
              $auth_ok =  0;
              $user = $_SERVER['PHP_AUTH_USER'];
              $pass = $_SERVER['PHP_AUTH_PW'];
              if(isset($user) && isset($pass) && $user == $user_db && $pass == $pass_db){
                $auth_ok = 1;
              }
              if (!$auth_ok){
                header('WWW-Authenticate: Basic realm="Zugangsdaten"');
                header('HTTP/1.0 401 Unauthorized');
                print "Zugriff verweigert";
                exit();
              }
              ?>
              <!-- Hier Ausgabe bei erfolreichem Login -->
              wäre das ein sicherer login, oder eher nicht?

              Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

              Kommentar


              • #8
                ich wollte es halt als login für eine administrationsseite nutzen.

                Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

                Kommentar


                • #9
                  Soweit ich das sehe müsste das sicher sein.
                  Allerdings wird es in deinem Verzeichnis (vorrausgesetzt deine Administrationsseite besteht nicht nur aus einer einzigen Seite) mehrere Dateien geben, die man mit der genauen URL aufrufen könnte.

                  Daher einfach in jede Datei diesen Code kopieren:
                  PHP-Code:
                  # Das würde ich alle Dateien in deinem "geschützen" Vereichnis einfügen

                  if(!isset($_SERVER['PHP_AUTH_USER'])) {
                      
                  header("Location: index.php"); 
                      
                  //einfach auf die File schicken, auf der du das Anmeldeformular öffnest
                      
                  exit;

                  Das Auslesen der User aus der Datenbank sollte natürlich richtig ablaufen, aber das stellt im Normalfall kein Problem da.

                  Jo, das wars.

                  Flo
                  Zuletzt geändert von Flo15; 14.03.2004, 20:06.
                  Selbst der dümmste Mensch ist nicht nutzlos.
                  Er kann immernoch als schlechtes Beispiel dienen!

                  Kommentar

                  Lädt...
                  X