Maresa P.: Upgeloadete Dateien sichern

Hallo,

ich habe eine Website mit USermanagement bei der die User Dateien (im ZIP Format) hochladen können. UMS und Dateiupload erfolgen mittels PHP. Das UMS funktioniert mit "Authentification" im Head. Die eingegeben Daten werden dann mit den Daten aus einer MySql Datenbank verglichen.

nun zu meinem Problem:
Auf die hochgeladenen Dateien sollen nur eingeloggte User zugiff haben können. Wie mache ich sowas am besten. Momentan kann man durch die direkte Eingabe des Links auh ohne eingeloggt zu sein auf die Dateien zugreifen.
Ich kann die Daien beim Upload natürlich in eine anderes Verzeichnis uberhalb des Apache htdocs speichern, dann kann man aber garnichtmehr über die Website drauf zugreifen.

Wie löse ich das Problem am besten?

Vielen Dank

Maresa P.

  1. Hi,

    Wie löse ich das Problem am besten?

    es gibt natürlich wie immer mehrere Lösungsansätze, einer davon sind sessions.
    eine einfache if-Abfrage reicht da um den Text nur den eingeloggten usern zugänglich zu machen.
    Lege beim einloggen eine session an, speichere den Loginnamen oder sowas und zeige Inhalte nur an, wenn dieser Name gesetzt ist.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. Wie löse ich das Problem am besten?
      es gibt natürlich wie immer mehrere Lösungsansätze, einer davon sind sessions.

      hallo,

      nein, du hast nicht verstanden was ich meine! es geht hier nicht um die benutzerverwalutng ansich, die exisitert nämlich schon.

      es geht darum, wie man zip dateien schützen kann, damit sie nur von eingeloggten usern aufgerufen werden können. ich kann wohl kaum am anfang einer zzip datei eine session abfragen!

      1. Hi,

        es geht darum, wie man zip dateien schützen kann, damit sie nur von eingeloggten usern aufgerufen werden können. ich kann wohl kaum am anfang einer zzip datei eine session abfragen!

        ah Du meinst, wenn jemand direkt in den querystring eingibt http://server/bla/bla.zip
        nun, woher soll er den Namen wissen? Benenne einfach alle Zips intern auf der Festplatte um in einen md5() -generierten String, den kann keiner von Hand eingeben.

        sowas wie http://server/bla/632432975ß2349623.zip
        der user kann die datei doch beim download eh umbenennen.

        Ansonsten geht wohl nur htaccess in Verbindung mit deiner jetzigen Benutzerverwaltung.

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
        1. Ansonsten geht wohl nur htaccess in Verbindung mit deiner jetzigen Benutzerverwaltung.

          Hi,
          alles klar. ich werd wohl zusätzlich noch eine .htaccess und eine .htpasswd Datei in das Verzeichnis legen müssen.
          In die .htpasswd muss ich dann wohl oder übel jedes mal wenn sich was an meiner Datenbank in der Tabelle user verändert, alle Usernamen und Passwörter (natürlich crypt) neu hineinschreiben. Oder gibts da ne bessere Lösung?

          Vielen Dank

          Maresa

          1. Hi,

            In die .htpasswd muss ich dann wohl oder übel jedes mal wenn sich was an meiner Datenbank in der Tabelle user verändert, alle Usernamen und Passwörter (natürlich crypt) neu hineinschreiben. Oder gibts da ne bessere Lösung?

            mir fällt leider keine ein ...

            ciao
            romy

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
            Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
            Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
            1. Hi,

              es würde doch auch funktioniere, wenn ich die Datien per php mittels ftp auf den server hoch und runterlade, oder?

          2. Moin!

            alles klar. ich werd wohl zusätzlich noch eine .htaccess und eine .htpasswd Datei in das Verzeichnis legen müssen.

            Bei deiner Ursprungsformulierung "Das UMS funktioniert mit "Authentification" im Head." hatte ich eigentlich gedacht, dass du genau das bereits im Einsatz hast: HTTP-Authentifizierung. Ist das jetzt so, oder nicht?

            In die .htpasswd muss ich dann wohl oder übel jedes mal wenn sich was an meiner Datenbank in der Tabelle user verändert, alle Usernamen und Passwörter (natürlich crypt) neu hineinschreiben. Oder gibts da ne bessere Lösung?

            Es gibt eine bessere Lösung: mod_auth_mysql.

            http://modules.apache.org/search?query=true&search=auth_mysql

            Frag mich aber jetzt bitte nicht, welches Modul du brauchst, oder wie du das installiert kriegst. Die Tatsache, dass du mit einem Apache-Modul deine MySQL-Datenbank befragen kannst, ist jedenfalls "besser".

            - Sven Rautenberg

            --
            ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
            1. Moin!

              HAllo!

              Bei deiner Ursprungsformulierung "Das UMS funktioniert mit "Authentification" im Head." hatte ich eigentlich gedacht, dass du genau das bereits im Einsatz hast: HTTP-Authentifizierung. Ist das jetzt so, oder nicht?

              Jein, das UMS funktioniert zwar über HTTP Authentifizierung, jedoch sende ich diese mittel PHP im header mit:

              Header("WWW-Authenticate: Basic realm="Haching Rockt"");
              Header("HTTP/1.0 401 Unauthorized");

              der eingegebene benutzername und das passwort werden nun mit der datenbank verglichen.

              gibt es ine möglichkeit per .htaccess zu überprüfen, ob überhaupt irgendein user angemeldet ist. egal mit welchem namen. das würde mir nämlich auch schon reichen.

              Es gibt eine bessere Lösung: mod_auth_mysql.

              Leider hab ich keinen Zugriff darauf, welche MODs auf dem Server installiert sind und ich kann selbst keine eigenen installieren (Schlund).