Ordner schützen bis User freigeschaltet
Hallo,
ich weiß ich habe schon einmal eine ähnliche Frage gestellt, komme aber wieder einmal nicht weiter... entweder Systemblind oder whatever.
1. Ich habe "einen" Benutzer.
2. Dieser Benutzer loggt sich in das System ein.
3. Er hat Zugrff auf "Ordner 2" erworben und klickt auf den Link "Ordner 2".
4. Die verlinkte Seite überprüft den rechtmäßigen Zugriff, ob der Benutzer "Ordner 2" sehen darf.
5. Er darf den Ordner sehen, also wird das Skript aus "Ordner 2" ausgeführt welches eine jeweilige index.html im jeweiligen Subordner per readfile() ausliest und anzeigt.
6. Das Skript (Adobe Presenter / index.html & viewer.swf) wird nun erfolgreich aufgerufen. Die Folien werden angezeigt, alles wunderbar.
(Die Adobe Presenter Daten und Folien auf die die index.html und der viewer.swf aus "Subordner" zugreifen liegen im Ordner "data", welcher nicht geändert werden kann.)
Alles so weit so gut, das System läuft, der Benutzer ist glücklich.... das "böse Skript Kiddi" ebenfalls, der Administrator jedoch nicht.
Warum? Weil man jede Seite / jeden Adobe-Presenter Viewer via URL aufrufen kann.
Zum Beispiel
www.domain.de/ordner 2/sub 2.1/viewer.swf
oder
www.domain.de/ordner 3/sub 3.1/viewer.swf
Der direkte Zugriff auf die Flash-Dateien und somit der unerlaubte Zugriff auf die relevanten Inhalte bleibt bestehen.
... wie bekomme ich nun diese Verzeichnisse vor direktem Zugriff geschützt? Ich habe es bereits mit htaccess versucht. Deny from all schlägt selbstverständlich fehl, da die index.html ja aufgerufen wird die wiederrum die daten aus den Unterordnern braucht. Dieser Zugriff wird ja durch deny from all unterbunden. Eine direkte Weiterleitung wenn die URL eine von den obenen ist auf die Startseite klappt wunderbar, allerdings werden die Inhalte ebenfalls nicht mehr angezeigt wenn man den richtigen Weg über das System geht. Sprich jegliche Arbeit mit htaccess schlug bisher fehl.
Weitere Lösungsansätze wie das temporäre kopieren der Dateien in einen speziellen User-Ordner sind ausgeschlossen da die Dateien mehrere Gigabyte an Umfang annehmen werden.
Ein Lagern der Dateien außerhalb des Doc-Root kommt zur Zeit in der Produktivumgebung nicht in Frage, klappte aber auch in einer Testumgebung nicht...
Ein Arbeiten mit Sessions wäre möglich, fällt mir aber keine Möglichkeit ein zur Zeit.
So long.... hiiiilllfeeeee
Wie bekomme ich die Ordner geschützt?
Grüße,
Tim
ich weiß ich habe schon einmal eine ähnliche Frage gestellt, komme aber wieder einmal nicht weiter... entweder Systemblind oder whatever.
1. Ich habe "einen" Benutzer.
2. Dieser Benutzer loggt sich in das System ein.
3. Er hat Zugrff auf "Ordner 2" erworben und klickt auf den Link "Ordner 2".
4. Die verlinkte Seite überprüft den rechtmäßigen Zugriff, ob der Benutzer "Ordner 2" sehen darf.
5. Er darf den Ordner sehen, also wird das Skript aus "Ordner 2" ausgeführt welches eine jeweilige index.html im jeweiligen Subordner per readfile() ausliest und anzeigt.
6. Das Skript (Adobe Presenter / index.html & viewer.swf) wird nun erfolgreich aufgerufen. Die Folien werden angezeigt, alles wunderbar.
(Die Adobe Presenter Daten und Folien auf die die index.html und der viewer.swf aus "Subordner" zugreifen liegen im Ordner "data", welcher nicht geändert werden kann.)
Alles so weit so gut, das System läuft, der Benutzer ist glücklich.... das "böse Skript Kiddi" ebenfalls, der Administrator jedoch nicht.
Warum? Weil man jede Seite / jeden Adobe-Presenter Viewer via URL aufrufen kann.
Zum Beispiel
www.domain.de/ordner 2/sub 2.1/viewer.swf
oder
www.domain.de/ordner 3/sub 3.1/viewer.swf
Der direkte Zugriff auf die Flash-Dateien und somit der unerlaubte Zugriff auf die relevanten Inhalte bleibt bestehen.
... wie bekomme ich nun diese Verzeichnisse vor direktem Zugriff geschützt? Ich habe es bereits mit htaccess versucht. Deny from all schlägt selbstverständlich fehl, da die index.html ja aufgerufen wird die wiederrum die daten aus den Unterordnern braucht. Dieser Zugriff wird ja durch deny from all unterbunden. Eine direkte Weiterleitung wenn die URL eine von den obenen ist auf die Startseite klappt wunderbar, allerdings werden die Inhalte ebenfalls nicht mehr angezeigt wenn man den richtigen Weg über das System geht. Sprich jegliche Arbeit mit htaccess schlug bisher fehl.
Weitere Lösungsansätze wie das temporäre kopieren der Dateien in einen speziellen User-Ordner sind ausgeschlossen da die Dateien mehrere Gigabyte an Umfang annehmen werden.
Ein Lagern der Dateien außerhalb des Doc-Root kommt zur Zeit in der Produktivumgebung nicht in Frage, klappte aber auch in einer Testumgebung nicht...
Ein Arbeiten mit Sessions wäre möglich, fällt mir aber keine Möglichkeit ein zur Zeit.
So long.... hiiiilllfeeeee
Wie bekomme ich die Ordner geschützt?
Grüße,
Tim
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 122662
Url: https://administrator.de/contentid/122662
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
25 Kommentare
Neuester Kommentar
Hi.
1. Also ich habe keine Ahnung vom Adobe Presenter, daher weiß ich nicht, ob Du eine original Fla Datei vorliegen hast, die Du manipulieren kannst. Denn wenn dies der Fall ist, kannst du es mit Sessions lösen in dem du in Deiner Flashdatei in PHP Script aufrufst, welches die Session Daten prüft und danach enscheidet ob irgendwas passieren soll oder nicht.
2. Anderenfalls, kannst Du Dir mittels eines prepent_files (eine Datei, die vor jedem Request an den Server ausgeführt wird) prüfen, ob der direkte Zugriff auf eine .swf erlaubt wird. Allerdings bin ich mir da nicht ganz sicher. Ist eben nur eine Idee!
Gruß Kuli
1. Also ich habe keine Ahnung vom Adobe Presenter, daher weiß ich nicht, ob Du eine original Fla Datei vorliegen hast, die Du manipulieren kannst. Denn wenn dies der Fall ist, kannst du es mit Sessions lösen in dem du in Deiner Flashdatei in PHP Script aufrufst, welches die Session Daten prüft und danach enscheidet ob irgendwas passieren soll oder nicht.
2. Anderenfalls, kannst Du Dir mittels eines prepent_files (eine Datei, die vor jedem Request an den Server ausgeführt wird) prüfen, ob der direkte Zugriff auf eine .swf erlaubt wird. Allerdings bin ich mir da nicht ganz sicher. Ist eben nur eine Idee!
Gruß Kuli
Hi
Dein Benutzer loggt sich in das System ein. Ich nehme an du benutzt da Cookies. Gib in diesem Cookie mit in welcher Ordnerstruktur der Benutzer sich bewegen darf. Schreib ein PHP-Script, das dies überprüft und danach den Zugriff zulässt/verwehrt.
Hoffe Du kannst was damit anfangen. Ansonsten erläutere ich es Dir gerne genauer.
Gruss
Ccamel
Dein Benutzer loggt sich in das System ein. Ich nehme an du benutzt da Cookies. Gib in diesem Cookie mit in welcher Ordnerstruktur der Benutzer sich bewegen darf. Schreib ein PHP-Script, das dies überprüft und danach den Zugriff zulässt/verwehrt.
Hoffe Du kannst was damit anfangen. Ansonsten erläutere ich es Dir gerne genauer.
Gruss
Ccamel
Hi
Den Denkfehler habe ich gemacht.
Habe was gefunden was dich nicht aufstellen wird:
http://www.phpforum.de/archiv_64051_Verzeichniss@schtzen@ohne@htaccess_ ...
Aber ich möchte ehrlich gesagt nicht glauben, dass es unmöglich ist.
Gruss und viel Glück
Den Denkfehler habe ich gemacht.
Habe was gefunden was dich nicht aufstellen wird:
http://www.phpforum.de/archiv_64051_Verzeichniss@schtzen@ohne@htaccess_ ...
Aber ich möchte ehrlich gesagt nicht glauben, dass es unmöglich ist.
Gruss und viel Glück
Hallo,
mir wäre da grad was eingefallen.
wie wäre es denn wenn du den zugriff auf diese dateien auf einen "abrufenden" host begrenzt?
Sprich mit einer htaccess nur von eigentlich Server aus zugreifen lässt.
Das müsste eigentlich funktionieren, wenn ein pbp script die Dateieen ausliefert,
alle anderen drüften ja dann ein deny bekommen.
Werd da mal einen Test machen.
grüße
edit
Also ich habs grad versucht und es funktioniert in dieser richtung.
eine htaccess mit folgendem inhalt:
das ganze in deinen daten ordner rein und fertig apache restart net vergessen
mir wäre da grad was eingefallen.
wie wäre es denn wenn du den zugriff auf diese dateien auf einen "abrufenden" host begrenzt?
Sprich mit einer htaccess nur von eigentlich Server aus zugreifen lässt.
Das müsste eigentlich funktionieren, wenn ein pbp script die Dateieen ausliefert,
alle anderen drüften ja dann ein deny bekommen.
Werd da mal einen Test machen.
grüße
edit
Also ich habs grad versucht und es funktioniert in dieser richtung.
eine htaccess mit folgendem inhalt:
order allow,deny
deny from all
allow from xxx.xxx.xxx.xxx
das ganze in deinen daten ordner rein und fertig apache restart net vergessen
Ja welche url ruft denn die viewer.swf auf?
irgendwas muss sie ja als param aufnehmen oder?
Ich werd nur nicht ganz schlau aus dem konstrukt.
Wie ist das jetzt welche datei beinhaltet schlussendlich die Folien?
Ist das die Viewer.swf? oder greift die nur auf eine weitere
Datei zu welche dann wirklich die Folien beinhaltet?
irgendwas muss sie ja als param aufnehmen oder?
Ich werd nur nicht ganz schlau aus dem konstrukt.
Wie ist das jetzt welche datei beinhaltet schlussendlich die Folien?
Ist das die Viewer.swf? oder greift die nur auf eine weitere
Datei zu welche dann wirklich die Folien beinhaltet?
Hm das wird jetzt komliziert.
Es geht im Prinzip darum die Abfragen die der viewer.swf generiert abzufangen und über den server abzurufen.
Ich könnte mir so ein system ca so vorstellen:
Das ganze liese sich aber auch anders realisieren fällt mir grad ein.
Wie wäre es denn wenn du jeden Aufruf auf data /* abfängst durch ein php Script jägst
und schaust ob derjenige das überhaupt darf?
Es geht im Prinzip darum die Abfragen die der viewer.swf generiert abzufangen und über den server abzurufen.
Ich könnte mir so ein system ca so vorstellen:
system > date.php -> index.html -> viewer.swf -> ganzgenialessicherscript.php -> xxx.swf
Das ganze liese sich aber auch anders realisieren fällt mir grad ein.
Wie wäre es denn wenn du jeden Aufruf auf data /* abfängst durch ein php Script jägst
und schaust ob derjenige das überhaupt darf?
Hm.
Jetzt wirds langsam schwierig, ich könnt mir vorstellen einen Wrapper einzusetzen der die viewer.swf wrappt.
Dadruch wäre die Möglichkeit da, durch diesen Wrapper eine Variable mitzuschleifen mit der man die
Berechtigung bestimmen könnte.
Das Problem das hier halt besteht ist jenes, das wie viewer.swf ja wie ein normaler Seitenaufruf gehandhabt wird.
Aber durch das durchschleusen aller Datei arten durch eine php Datei zur Zutrittskontrolle, brauch man hier irgendwas.
Mal überlegen vielleicht fällt mir noch was ein.
Wäre es eig. möglich mal ein paar testdateien zu bekommen?
gruß
Jetzt wirds langsam schwierig, ich könnt mir vorstellen einen Wrapper einzusetzen der die viewer.swf wrappt.
Dadruch wäre die Möglichkeit da, durch diesen Wrapper eine Variable mitzuschleifen mit der man die
Berechtigung bestimmen könnte.
Das Problem das hier halt besteht ist jenes, das wie viewer.swf ja wie ein normaler Seitenaufruf gehandhabt wird.
Aber durch das durchschleusen aller Datei arten durch eine php Datei zur Zutrittskontrolle, brauch man hier irgendwas.
Mal überlegen vielleicht fällt mir noch was ein.
Wäre es eig. möglich mal ein paar testdateien zu bekommen?
gruß