Ankündigung

Einklappen
Keine Ankündigung bisher.

Session-Login und Verzeichnisschutz

Einklappen

Neue Werbung 2019

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

  • Session-Login und Verzeichnisschutz

    Hallo zusammen,

    ich bin Hobby-PHPler und verzweifle bei folgender Problemstellung:

    Ich habe ein Sessionbasiertes Login-System erstellt. Es gibt nun einen sogenannten "Internen Bereich" und einen "Öffentlichen Bereich".
    Das Funktioniert mit Texten und Datenbankausgaben (MYSQL) auch alles bestens. Allerdings sollen im "Internen Bereich" auch Bilder bzw. Dateien für eingeloggte User zur Verfügung gestellt werden.
    Ist aber ein Benutzer so "Clever" und kopiert sich die Adresse der internen Datei heraus, kann er auch ohne einen Login eine eigentlich nur für interne Zwecke zu verwendende Datei einsehen bzw. diese Adresse an unregistrierte Benutzer weitergeben. Ein Aufruf der Datei wäre somit für jeden möglich!
    Wie lässt sich das Problem beheben?
    Ich dachte da an eine Möglichkeit, dass in einem internen Ordner mit internen Dateien ein Script abgelegt wird, welches automatisch aufgerufen wird, sobald irgendeine Datei in diesem Ordner aufgerufen wird und den Login-Status checkt.
    Wär' echt super, wenn ihr mir weiterhelfen könntet ich steh' echt irgendwie aufm Schlauch...

    Vielen Dank schonmal vorab...

    Grüße

    PiqueNique

  • #2
    Ich würde das so lösen:

    Die Bilder kommen in ein Verzeichnis. Dieses Verzeichnis und deren Inhalt bekommen per chmod nur soweit rechte, dass der Benutzer auf dem PHP läuft die Daten lesen kann, alle anderen Rechte werden abgeschaltet.
    Somit bekommt man bei einem normalen aufruf der Bilder schoneinmal ein 403 Error (Forbidden).

    Dann würde ich ein PHP Script schreiben, welches am Anfang die Session prüft (ob eingeloggt), und wenn ja, dann das Bild einlesen (read) den header des php scriptes von text/plain auf image/jpeg ändern (oder welcher typ das Bild ist) und das bild mit echo ausgeben.

    Das PHP Script arbeitet somit als Bild.
    In deinem HTML kannst du nun schreiben
    Code:
    <img src="bild.php?bild=dasbild.jpg" />
    Im Falle, dass der Benutzer eingeloggt ist (bild.php überprüft ja die Session) wird das Bild vom bild.php-Script gelesen und ausgegeben (Somit sichtbar).
    Kopiert nun ein schlauer den Pfad bild.php?bild=dasbild.jpg und ruft ihn auf, merkt das PHP Script anhand der Session-Prüfung, das man nicht eingeloggt ist und gibt einen Fehler, ein Fehler-Bild oder gar nichts aus (leere Seite), oder ganz fies, leitet auf ein 403 um.

    Kommentar


    • #3
      Zitat von Frank Beitrag anzeigen
      Ich würde das so lösen:

      Die Bilder kommen in ein Verzeichnis. Dieses Verzeichnis und deren Inhalt bekommen per chmod nur soweit rechte, dass der Benutzer auf dem PHP läuft die Daten lesen kann, alle anderen Rechte werden abgeschaltet.
      Somit bekommt man bei einem normalen aufruf der Bilder schoneinmal ein 403 Error (Forbidden).
      Das funktioniert meistens aber leider nicht. Ich würde daher eher eine .htaccess-Datei mit dem Inhalt
      Code:
      Deny from all
      in das Verzeichnis legen.

      Den Bild-URL kann man durch einen Rewrite übrigens noch verschönern.

      Kommentar


      • #4
        Wow, vielen Dank für die schnelle Antwort...
        sorry, dass ich mich ein bissl dümmer anstelle als gedacht.
        Könntest Du mir Deine zügigen Gedankengänge netterweise etwas ausführlicher beschreiben?
        Irgendwie weiß ich nicht so recht, wie ich da dann ansetzen soll.
        Der User ist localhost, das Verzeichnis hab ich auf 400 Besitzer - Lesen gesetzt....

        Danke nochmal für Deine Bemühungen...

        Kommentar


        • #5
          Sorry, jetzt war ich wohl etwas zu voreilig, bevor ich die zweite Antwort gelesen hab!

          Also, das mit dem Deny from all hab ich so eingerichtet.

          Wie kann ich das Bild jetzt trotzdem anzeigen lassen??

          Vielen Dank nochmal!!!

          Kommentar


          • #6
            Mit PHP einlesen und ausgeben (readfile()).

            Kommentar


            • #7
              VIELEN VIELEN HERZLICHEN DANK!!!

              Und schon funktioniert der Spaß!!!

              Freundliche Grüße und fröhliches weiterprogrammieren... habt mir sehr geholfen!

              PiqueNique

              Kommentar


              • #8
                Immer wieder schön wenn sich Leute hier bedanken

                Kommentar


                • #9
                  Freundliche Unterstützung soll schließlich zumindest ein Dankeschön geben....

                  Kommentar


                  • #10
                    Zitat von PiqueNique Beitrag anzeigen
                    Freundliche Unterstützung soll schließlich zumindest ein Dankeschön geben....
                    so ist es..

                    Könntest du eventuell noch Ausschnitte von deinem Code posten? Vielleicht hilfts ja jemandem, der ein ähnliches Problem hat..?


                    lg
                    Andi

                    Kommentar

                    Lädt...
                    X