PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Dateien trotz htaccess zum Download anbieten (http://www.selfphp.de/forum/showthread.php?t=25323)

grosser Panda 07.07.2014 19:32:01

Dateien trotz htaccess zum Download anbieten
 
Ich habe ein Verzeichnis mit mehreren Dateien. Diese Dateien werden durch eine htaccess-Datei gegen einen direkten Aufruf geschützt. Nun möchte ich die Dateien auf einer Internseite-auflisten und mit Links zum Download anbieten. Die im Internet auf vielen Seiten angepriesene Lösung, Dateipfad und Dateiname per GET an eine php-Seite weiterzugeben und dort mit readfile auszugeben, finde ich sehr unsicher. Es muss doch eine bessere Lösung geben. Hat jemand von euch eine Idee?

DokuLeseHemmung 07.07.2014 22:35:32

AW: Dateien trotz htaccess zum Download anbieten
 
Zitat:

Dateipfad und Dateiname per GET an eine php-Seite weiterzugeben und dort mit readfile auszugeben, finde ich sehr unsicher. Es muss doch eine bessere Lösung geben. Hat jemand von euch eine Idee?
Vorschlag:
Erzeuge für jede Datei einen Unique Key.
Und übergib nur diesen.

Alternativ:
Nur einen Teil des Pfades übergeben.

Übrigens:
Sicherheit per verbergen ist nicht unbedingt eine gute Idee.

meikel (†) 07.07.2014 22:51:10

AW: Dateien trotz htaccess zum Download anbieten
 
Zitat:

Zitat von DokuLeseHemmung (Beitrag 146672)
Sicherheit per verbergen ist nicht unbedingt eine gute Idee.

Das stimmt, aber es gibt genug und satt Scripte, bei denen man mit oder ohne Login files zum Download anbieten kann.

grosser Panda 08.07.2014 12:36:11

AW: Dateien trotz htaccess zum Download anbieten
 
Zitat:

Zitat von DokuLeseHemmung (Beitrag 146672)
Vorschlag:
Erzeuge für jede Datei einen Unique Key.
Und übergib nur diesen.

Alternativ:
Nur einen Teil des Pfades übergeben.

Übrigens:
Sicherheit per verbergen ist nicht unbedingt eine gute Idee.

Die Dateien werden via FTP-auf den Server geladen. Das php-Script sucht dann alle Dateien im Vereichnis und Unterverzeichnissen und bietet diese zum Download an. Den Dateinamen oder so kann ich daher nicht beeinflussen.
Ich würde schon nur den letzten Teil des Pfades übergeben, aber auch das ist aus meiner Sicht keine seriöse Lösung. Wenn jemand den Broweserverlauf kennt (z. B. öffentlicher Computer) kann er die Datei herunterladen.

Zitat:

Zitat von meikel (Beitrag 146674)
Das stimmt, aber es gibt genug und satt Scripte, bei denen man mit oder ohne Login files zum Download anbieten kann.

Danke meikel. Aber meine Frage war nicht, ob es solche Scripte gibt. Das habe ich schon angenommen, Ich suche ein solches Script oder auch nur die Idee. Schreiben kann ich das Script selbst. Und das Befragen der Suchmaschinen hat leider nichts schlaues ergeben.

grosser Panda 09.07.2014 16:38:35

AW: Dateien trotz htaccess zum Download anbieten
 
Ich habe mir mal eine Lösung ausgedacht. Anstelle einer weiteren Datei rufe ich einfach die gleiche Datei nochmals auf und übergebe ihr die Daten mittels GET. Da die Datei vom System aus geschützt ist, kann man durch Aufrufen des Direktlinks ohne Login keine Dateien herunterladen.
Allerdings läuft es noch nicht wie gedacht. Mein Script findet zwar die Dateien, aber der Befehls "readfile" übergeht seinen Parameter einfach und gibt nicht die Datei, sondern eine Ladung Seitenquelltext aus. Der Seitenquelltext ist immer so lange, wie die Datei, die ich eingentlich herunterladen möchte. Wenn ich z. B. eine Textdatei mit dem Inhalt "Hallo" herunterladen möchte, dann bekomme ich eine Textdatei mit den ersten 5 zeichen des Quelltextes.
Was läuft da schief? Mein Quelltext beginnt folgendermassen:
Code:

<?php
if (!empty($_GET['dl'])) {
$dl = $_GET['dl'];
} else {
$dl = 0;
}

if ($dl == 1) {
$datei = $_GET['datei'];
$pfad = $_GET['pfad'];

$dokument = 'meinpfad/' . $pfad.$datei;

header("Content-Type: x-type/subtype");
header("Content-Length: ".filesize($dokument));
header("Content-Disposition: attachment; filename=".$datei);

readfile($dokument);
}

//weiter unten werden die Dateien in allen Unterordnern
//mit readdir herausgesucht und aufgelistet

Der Untere Teil des Quelltextes läuft problemlos. Am Pfad kann es nicht liegen. Wenn ich den Pfad abändere bekomme ich eine Fehlermeldung. Und diese komische Eigenart, dass die Länge des ausgegebenen Quelltextes gleich der Länge der abgerufenen Datei ist bedeutet, dass der Pfad stimmen muss.
Der Fehler steckt irgendwo beim Befehl "readfile()". Ich kann den Parameter von readfile beliebig ändern. Das Script arbeitet immer genau gleich. readfile() reagiert also überhaupt nicht auf den Parameter "$dokument". Ich kann mir nur nicht erklären wieso.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:54:18 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.