Marco: Gebe nicht auf - nochmals die Frage mit dem Dokument (Beispiel)

Hallo zusammen, ich gebe einfach nicht auf !!

Nun jetzt komme ich mit dem Beispiel wo Ihr selbst anschauen könnt unter http://www.g-design.ch/testintranet/login.php könnt ir euch einloggen mit benutzername: test und passwort: test

Okey, wenn ir jetzt z.B auf das Testdokument.doc klickt dann wir es ja in einem Word-Dokument angezeigt. Aber leider wird auch die URL im Browser oben gespeichert...

Wenn ich mich jetzt auslogge, ist die URL immer noch oben über den Browser abrufbar und das Dokument kann einfach wieder angeschaut werden. Es sind aber wichtige Dokumente, welche nach einem Logout nicht mehr einfach anzusehen sein sollten.

Wie kann ich das verhindern, ich kann leider nicht auf .htaccess zurückgreifen da unser Server unter Windows2000 läuft !!

Freue mich a uf Eure Antworten.

Gruss Marco

  1. Hallo zusammen, ich gebe einfach nicht auf !!

    Nun jetzt komme ich mit dem Beispiel wo Ihr selbst anschauen könnt unter http://www.g-design.ch/testintranet/login.php könnt ir euch einloggen mit benutzername: test und passwort: test

    Okey, wenn ir jetzt z.B auf das Testdokument.doc klickt dann wir es ja in einem Word-Dokument angezeigt. Aber leider wird auch die URL im Browser oben gespeichert...

    Wenn ich mich jetzt auslogge, ist die URL immer noch oben über den Browser abrufbar und das Dokument kann einfach wieder angeschaut werden. Es sind aber wichtige Dokumente, welche nach einem Logout nicht mehr einfach anzusehen sein sollten.

    Wie kann ich das verhindern, ich kann leider nicht auf .htaccess zurückgreifen da unser Server unter Windows2000 läuft !!

    Freue mich a uf Eure Antworten.

    Gruss Marco

    1. Huhu Marco,

      habe eben reflexhaft auf Enter gedrückt, naja ...

      Wie kann ich das verhindern, ich kann leider nicht auf .htaccess zurückgreifen da unser Server unter Windows2000 läuft !!

      Das Problem ist, dass alle Dokumente direkt über das Web aufrufbar sind.

      http://www.g-design.ch/testintranet/Protokolle/Testdokument.doc

      Eine Lösung wäre es

      1. Alle Dokumente oberhalb des Webroots abzulegen

      2. Ein Script welches diese auf Anfrage und richiger Userkennung 'durchreicht'

      Ungefär so:

      1. Login

      2. Session erzeugen

      3. Dokumente auflisten

      4. Bei Auswahl Berechtigung prüfen

      5. Datei 'durchreichen'

      6. Bei Logout (und inactivity timeout) Sessionid ungültig setzen / löschen.

      so short ...

      Viele Grüße

      lulu

      1. Hallo Lulu,

        was heisst das ausserhalb des Webroots ablegen ?!? Verstehe ich nicht ganz. Also das Login usw mache ich ja auch mit Sessions. Bis zu Punkt 3. mache ich es !!

        Aber was meinst Du dann mit Bei Auswahl Berechtigung prüfen? Also wenn ich dann auf das Word.doc klicke, bin ich ja schon eingeloggt !! Aber auch wenn ich zuerst prüfe ob die Berechtigung stimmt wird es dann im Browser angezeigt...

        Auch weiss ich nicht ganz wie Du es bei 5. meinst mit dem durchreichen...

        Uii, ich freue mich auf Deine Antwort !!

        Gruss Marco

        1. Hallo Marco,

          auf der Maschine, auf der der Webserver läuft, sind viele viele Verzeichnisse

          ----+-----
              |        +--- Verzeichnis des Benutzers xyz
              |        v
              |
              +--------+-------HTML-Dateien Domain xyz.de
              |        |
              |        +-------andere Dateien des Domainbesitzers xyz
              |
              +--------+-------HTML-Dateien Domain abc.de
                       |
                       +-------andere Dateien des Doaminbesitzers abc

          usw.

          Alle Dateien, die im Verzeichnis "Domain xyz.de" liegen, sind öffentlich. d.h. dass der Webserver (das ist ein Programm!) darauf zugreifen kann. Der Webserver ist zum Beispiel unter dem Namen wwwrun beim Betriebssystem angemeldet (logged on). Das bedeutet aber auch, dass Das Betriebssystem nichts davon merkt, ob Du als Surfer mal mit Deinem Browser vorbeischaust. Das hat es alles an den Webserver delegiert. Der kennt aber keine unterschiedlichen Benutzer. Er darf aber nur die Dateien auf dem Server anzeigen, die im Domainbereich des Besitzers abgelegt sind. Da macht er aber keinen Unterschied zwischen den Besuchern.

          Zusätzlich läuft auf der Maschine, auf der der Webserver läuft, ein PHP-Server (Deamon), der mit dem Webserver eng zusammenarbeitet. Solltest Du jetzt ein PHP-Script aufrufen, so kann der PHP-Deamon merken, dass Du dich autehnfiziert hast. Die Auth-Daten werden bei jedem Aufruf der Domain automatisch dem Script mitgesandt und stehen so dem Deamon zur Verfügung.

          Der PHP-Deamon darf auch außerhalb des Verzeichnisses der Domain, also zum beispiel im Userbreich des Besitzers, Daten lesen und sogar schreiben! Wenn Du jetzt Dokumente in diesem Bereich ablegst, kommst Du mit einem "normalen http-request" nicht an die Dokumente heran. Da der Deamon dort aber lesen darf, kannst Du ihm per PHP-Script einen Aufrtag erteilen (Client-Server-Modell). Wenn es ihm passt (wenn nämlich die im Script programmierten Bedingungen zutreffen), dann erfüllt er Dir deinen Wunsch. Er kann dann mit einem speziellen Algorithmus die Datei an den Client ausliefern.

          Suche einfach mal unter "Bilder in Datenbank"
          http://forum.de.selfhtml.org/archiv/2002/10/25753/#m141038
          dort findest Du ein Script, dass Du für Deine Zwecke umbauen kannst.

          Die Referrer-Abfrage ist nicht notwendig. Es fehlen hier noch die paar Zeilen für eine Authentifizierung. Aber wie die Header aufgebaut werden müssen, kannst Du gut daraus erkennen.

          Viel Erfolg

          Tom

  2. Hallo Marco,

    beschreib doch mal Dein Login-Verfahren, was Du da machst.
    Wie hast Du denn die Abmeldung implementiert?

    Außerdem habe ich den Eindruck, dass Dein Dokument.doc unterhalb (innerhalb) der Dokument-Root gespeichert ist. Da bekommst Du natürlich keine Sicherheit, es sei denn, du verbietest dem Apachen über einen direkten http-request auf das Verzeichnis zuzugreifen. Nur dann kann auch der PHP-Deamon nicht mehr zugreifen, denn der hat in aller Regel die gleiche Gruppe, den gleichen User wie der Apache.

    Lege Deine Dokumente außerhalb der Dokument-Root oder zur Not auch als Blob in eine Datenbank. Dann benötigst Du ein Script, dass das angeforderte Dokument ausliefert und dieses Script sollte dann erst die Auth-Daten prüfen und ggf. die Sessiondaten (Alter der Session) usw.

    Ich sehe da keinen anderen Weg. Vielleicht sind die Anderen da anderer Meinung?

    Liebe Grüße aus http://www.braunschweig.de

    Tom