mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 11:15 Benutzername: Passwort: Auto-Login

Thema: [PHP] Dateischutz vom 14.10.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Dateischutz
Seite: 1, 2  Weiter
Autor Nachricht
easteregg
Threadersteller

Dabei seit: 15.02.2003
Ort: Deutschland
Alter: 36
Geschlecht: Männlich
Verfasst Do 14.10.2004 15:16
Titel

[PHP] Dateischutz

Antworten mit Zitat Zum Seitenanfang

Hi,
ich habe vor einen Download-Service zu starten. Da ich nicht unbegrenzt Traffic zur Verfügung habe möchte ich, dass man angemeldet sein muss, um die Datei runterladen zu können.
So. Nun darf die Datei aber nur einmal unter der jeweiligen URL liegen. Also User "XYZ" lädt die Datei "Test.zip" herunter. Für ihn ist die Download-URL "http://www.beispiel.de/download/8208237/Test.zip". Wenn er nun aber (pfiffig wie er ist) seinem Freund diese Download-URL weitergibt (damit der sich nicht anmelden muss) soll die Datei nicht mehr da sein.

Problem gut beschrieben?
Hoffe auf eure Antworten.

MfG,
easteregg
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht: Männlich
Verfasst Do 14.10.2004 15:23
Titel

Antworten mit Zitat Zum Seitenanfang

Also:

1) Alle downloads nur über ein Script, z.b. download.php?id=55642
2) Files liegen in Wirklichkeit ausserhalb des Webroots oder in einem Verzeichnis, an welches nur der Apache hinkommt. (Stichwort: htaccess DENY FROM ALL)
3. Beim Aufruf der download.php wird zuerst die Berechtigung gecheckt (Sessions oder wie du willst...), falls erfolgreich, wird das File vom Server geholt und mit den richtigen Headern (Filename etc.) an den Client geschickt.

Ich hoffe das ist als Denkanstoss ausreichend *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
easteregg
Threadersteller

Dabei seit: 15.02.2003
Ort: Deutschland
Alter: 36
Geschlecht: Männlich
Verfasst Do 14.10.2004 15:33
Titel

Antworten mit Zitat Zum Seitenanfang

Eistee hat geschrieben:
1) Alle downloads nur über ein Script, z.b. download.php?id=55642

Ok, ist klar
Eistee hat geschrieben:
2) Files liegen in Wirklichkeit ausserhalb des Webroots oder in einem Verzeichnis, an welches nur der Apache hinkommt. (Stichwort: htaccess DENY FROM ALL)

Komm ich auch noch mit Grins
Eistee hat geschrieben:
3. Beim Aufruf der download.php wird zuerst die Berechtigung gecheckt (Sessions oder wie du willst...), falls erfolgreich, wird das File vom Server geholt und mit den richtigen Headern (Filename etc.) an den Client geschickt.

Da steig ich dann aus *zwinker*
Berechtigungscheck ist klar, aber wie hole ich das dann vom Server und schicke es mit den richtigen Headern an den Client?

P.S.: Danke Eistee Lächel

MfG,
easteregg
  View user's profile Private Nachricht senden
phreaknerd

Dabei seit: 04.10.2004
Ort: owschlag
Alter: 49
Geschlecht: Männlich
Verfasst Do 14.10.2004 15:38
Titel

beispiel

Antworten mit Zitat Zum Seitenanfang

//Berechtigung checken... dann

//header senden je nach Dateityp anderer Header - für downloads oft "octet/stream" um das "Speichern unter" zu erzwingen...google mal

$f = fopen("Pfad zum nichtöffentlichenverzeichnis", "r");
fpassthrough($f); //gibt den Dateiinhalt direkt aus.
fclose($f);

fertig ist die wurst.
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht: Männlich
Verfasst Do 14.10.2004 15:41
Titel

Antworten mit Zitat Zum Seitenanfang

Richtige Header z.b. das beim User im Download Dialog net dransteht "download.php" speichern sondern "filename.zip" speichern. Oder um den Filetype etc anzugeben.

Beispiel: (allerdings ohne Gewähr *G*)
Code:

header("Cache-control: private");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Length: ".filesize("/protected_folder/filename.zip"));
header("Content-Disposition: attachment; filename=\"filename.zip\"");


Die einfachste Möglichkeit ne Datei auszugeben:

www.php3.de/readfile
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
karmacoder

Dabei seit: 15.04.2002
Ort: Fürth
Alter: 42
Geschlecht: Männlich
Verfasst Do 14.10.2004 16:15
Titel

Antworten mit Zitat Zum Seitenanfang

macos9 oder browser wie ns 4.x haben damit probeleme, als dateiname wird das aufrufende script genommen,
der dateiinhalt ist in ordnung der user muss blos die datei selber umbebennen.
zum glück sind solche user sehr selten geworden, aber vielleicht sollte man das in irgendeiner hilfe/faq anmerken.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
easteregg
Threadersteller

Dabei seit: 15.02.2003
Ort: Deutschland
Alter: 36
Geschlecht: Männlich
Verfasst Do 14.10.2004 16:25
Titel

Antworten mit Zitat Zum Seitenanfang

Mh, also muss das Skript dann einfach nur die Header-Infos angeben (siehe Eistee)? Wie starte ich denn den Download? Mit readfile?

MfG,
easteregg
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht: Männlich
Verfasst Do 14.10.2004 16:27
Titel

Antworten mit Zitat Zum Seitenanfang

Die Header sagen dem Client "Achtung jetzt kommt ein Download, Name soundso, Grösse soundso", was du danach an Daten sendest ist egal, wird alles als Datei gespeichert,

Und mit readfile sendest du halt die komplette Datei.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.