Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.04.2017, 12:43
j.kanuft j.kanuft ist offline
Besucher
 
Registriert seit: 30.03.2008
Beiträge: 94
Standard Dateizugriff einschränken

Hallo Leute,

ich habe keinerlei Erfahrung mit der Einschränkung des Zugriffes auf Dateien in meinem Web.

ich möchte alle meine Dokumente auf meinem Websever ablegen,
überwiegend welche, die sonst niemand anschauen können soll.

Einzelne Dokumente davon möchte ich aber auf meinen Internetseiten zum Runterladen freigeben ohne sie auf meinem Webserver speziell dafür zu kennzeichnen.

Beispiel:

ich habe alle meine Dokumente in Unterverzeichnissen des Verzeichnisses

www.mein-web.de/dokumente

wenn jemand diese Verzeichnis oder seine Unterverzeichnisse aufrufen will darf er NICHT darauf zugreifen können.

wenn jemand über seinen Browser VON einer meiner Internetseiten,

z.B.
www.mein-web.de/infoseiten

auf die Datei

http://www.mein-web.de/dokumente/unt...che-Datei1.pdf

zugreifen will,

soll er diese Datei herunterladen werden dürften.

Der User kann ja diesen Link sehen
und könnte dann versuchen direkt auf das Verzeichnis:

www.mein-web.de/dokumente/unterverzeichnis-1/

zugreifen,
dann soll er aber die sonstigen dortigen Dateien weder auflisten noch
herunterladen dürfen.

Wie kann ich das mit oder ohne PHP realisieren?
Mit Zitat antworten
  #2  
Alt 21.04.2017, 12:57
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.684
Standard AW: Dateizugriff einschränken

Da gibt es verschiedene Wege:
1) Lege Dateien, die niemand herunterladen können soll, in ein Verzeichnis oberhalb vom documentroot verzeichnis und nicht darunter. Den Zugriff auf bestimmte Dateien, könntest du dann per php-download script machen, welches auf den Ordner zugreift und die Dateien zum Download anbietet

2) leg eine htaccess Datei an, die alle Anfragen auf eine Fehlerseite umleitet, solange es sich nicht um eine existierende Datei handelt, auf die zugegriffen wird.

Lg Kasalop
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten
  #3  
Alt 21.04.2017, 13:06
j.kanuft j.kanuft ist offline
Besucher
 
Registriert seit: 30.03.2008
Beiträge: 94
Standard AW: Dateizugriff einschränken

danke für die Tipps.

ich möchte, dass das (ohne die einmalige Einrichtung) ohne zusätzliche Arbeit für jede Datei für mich abläuft.

Natürlich könnte ich die freigegebenen Dokumente in eigenes Verzeichnis dafür kopieren.

Dann wären sie aber automatische nicht mehr aktuell wenn ich an den ursprünglichen Dokumenten etwas ändere, was quasi dauernd vorkommt.

zu 2.)
hätte den Nachteil das für jede Datei ein einzelner Eintrag in der .htaccess angelegt werden müsste,
was der zusätzlichen vermeidbaren Arbeit entspricht.

was gäbe es denn da noch für Möglichkeiten die du angedeutet hast?
Mit Zitat antworten
  #4  
Alt 21.04.2017, 16:57
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.684
Standard AW: Dateizugriff einschränken

Nein. Da fehlt dir Hintergrundwissen, wie es scheint oder ich verstehe dich falsch.

Lösung wie 1)
Ordnerstruktur:
Code:
DIR/tmp
DIR/public
DIR/files
...

Und der DocumentRoot liegt auf DIR/public. Deine Dateien packst du in DIR/files.
Nun eine php Datei (download.php):
PHP Quellcode:
<?php // Aufruf: download.php?filename=abc.pdf
  if(!array_key_exists('filename', $_GET))
    throw new Exception('Keine Dateie angegeben!');
  $absoluteFilename = realpath("DIR/files/".basename($_GET['filename']));
  if(!file_exists($absoluteFilename) || !is_file($absoluteFilename))
    throw new FileNotFoundException();
  $mime = mime_content_type($_GET['filename']);
  header('Content-Type: '.$mime);
  header('Content-Disposition: attachment; filename="'.$absoluteFilename.'"');
  readfile($absoluteFilename);

Das Skript musst du natürlich noch etwas absichern. So kann jeder mit Kenntnis des Dateinamens jede Datei herunterladen. Dies kannst du einfach durch einen Token in einer Session lösen.

Lösung wie 2)
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ ErrorDocument.php[R=404]


Alles was keine existierende Datei ist wird auf ErrorDocument.php weitergeleitet mit dem Status Code 404 (Not Found).

Kannst / musst beides natürlich für deinen Fall anpassen.

Lg Kasalop

PS: Beides ist ungetestet, soll dir aber einen Anhaltspunkt liefern, wie das aussehen kann.
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten
  #5  
Alt 21.04.2017, 18:51
Marlon Schultz Marlon Schultz ist offline
Engagierter Besucher
 
Registriert seit: 27.05.2007
Ort: Berlin
Beiträge: 925
Standard AW: Dateizugriff einschränken

Installiere Dir OwnCloud auf dem Server. Da kannst Du Dateien per Link freigeben, auch zeitlich begrenzt und dazu von Deinem Rechner aus die Links erstellen.
__________________
Ich bin ein Signaturvirus, verwenden sie mich auch, damit ich mich verbreiten kann.
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dateizugriff Px95xy PHP 4 19.11.2011 19:02
Dateizugriff! BenjaminXX Skriptsuche 29 16.01.2008 22:00
Dateizugriff mit Php callmeagent PHP 0 27.04.2005 00:23
Dateizugriff von Xp auf Nt4.0 sromic PHP 2 29.07.2004 11:57
... Dateizugriff ... emmis PHP 1 25.04.2003 12:08


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:23 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC