Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   [PHP] Download bei Direktlink verhindern (https://www.tweakpc.de/forum/programmiersprachen/50627-php-download-bei-direktlink-verhindern.html)

Fabian 19.07.2007 17:41

[PHP] Download bei Direktlink verhindern
 
Hi,

ich bin auf der Suche nach einer einfachen Lösung, um Direktlinks auf Dateien abzufangen oder nicht zu ermöglichen. Die Leute sollen über meine Seite auf einen Download klicken.

Ich habe jetzt bereits ein Download-Script gefunden ([URL="http://www.stadtaus.com/php_scripts/download_center_lite/"]Download Center Lite[/URL]). Von den Einstellungsmöglichkeiten sieht das auch ganz nett aus und macht eigentlich alles, was ich haben möchte. Allerdings denke ich, dass die Serverlast dadurch deutlich steigt. Wenn jeder Benutzer einen Download startet, muss der Server alle Skripte so lange bearbeiten, bis der Download abgeschlossen ist - ist die Annahme richtig?

Welche anderen Möglichkeiten gibt es? Bei den meisten großen Download-Seiten stecken die Dateien immer in irgendwelchen kryptischen Ordnern, die nach einer gewissen Zeit ungültig werden. Wie würde ich so etwas realisieren?

Exit 19.07.2007 20:18

AW: [PHP] Download bei Direktlink verhindern
 
[quote=Fabian;497322]Allerdings denke ich, dass die Serverlast dadurch deutlich steigt. Wenn jeder Benutzer einen Download startet, muss der Server alle Skripte so lange bearbeiten, bis der Download abgeschlossen ist - ist die Annahme richtig?
[/quote]

Eigentlich nicht. Kommt drauf an wie es genau gemacht wird - aber grundsätzlich bedeutet es nur, dass der Webserver die Datei selbst binär einliest - und dann zum Client schickt.

Dabei entsteht grundsätzlich mehr Last da die Datei komplett vom Server eingelesen werden muss - aber dann wird die Datei eigentlich direkt an den Client rausgepustet. Der Server ist also dabei normalerweise nur mit dem einlesen beschäftigt - der restliche Datentransfer sollte die Scripte nicht weiter belasten.

Für Video's von mehreren hundert MB's dürfte das aber tödlich für den Webserver sein.

Ich selbst habe sowas unter ASP.NET schon selbst implementiert. Wir speichern dabei Dateien in einer SQL Server Datenbank und diese werden auch über so einen Handler ausgelesen und an den Client geschickt.

Weiterhin mache ich hier: [url=http://www.japan-all-stars.de]Infinity Treffen - Japan All Stars[/url] sowas ähnliches mit den Thumbnail Bildern.
z.B.: [url=http://www.japan-all-stars.de/jas2007/jas.aspx?page=bilder_fahrzeuge]Japan All Stars 2006 - Japan All Stars[/url]

Diese Thumbnails liegen physisch nicht auf dem Webserver sondern werden dynamisch aus den richtigen Bildern per ASP.NET generiert und über so einen Handler in dem Fall: [html]http://www.japan-all-stars.de/image/thumbgenerator.aspx?catalog=jas2007%2fimages%2ffahrzeuge&ID=2[/html] von der Datei "thumbgenerator.aspx" ausgegeben.

Fabian 19.07.2007 20:31

AW: [PHP] Download bei Direktlink verhindern
 
Aber das machst du nur mit dem Thumbnails nicht mit den großen Bildern. Wieso das nicht?

Exit 19.07.2007 20:51

AW: [PHP] Download bei Direktlink verhindern
 
Ja - warum sollte ich das da auch machen?

Die dürfen ruhig in andere Websites verlinkt / eingebettet werden. Es ging mir nur darum net nochmal so viele Thumbails rumliegen zu haben wie es auch Bilder gibt.

Alternativ fällt mir da noch eine Konfiguration über htaccess ein. Dabei die Downloads in nen Ordner rein, der per htaccess geschützt ist. Dann bietest Du auf ner Seite die Dateien an - dort (wenn man auf die Listenseite geht) oder auf ner Zwischendatei machste das Login (ohne extra Nutzereingabe) und dann schreibste nen kurzen Sessioncookie passend zur Größe/Downloadgeschwindigkeit des Clients (also auch mal zur Not für ISDN/Modem ausreichend).

Ob das auch geht kann ich leider nicht sagen - dafür kenne ich mich in der Linux/Apache/PHP Welt zu wenig aus.

Unter ASP.NET geht das ähnlich aber dafür muss man genügend Rechte auf dem Webserver haben. Da kann man Ordner/Dateien über die Applikation schützen aber das gilt standartmäßig nur für ASP.NET Dateien (*.aspx, *.config, *.ascx usw.). Alle anderen Dateien (z.B.: *.zip, *.doc, *.jpg usw.) sind nicht geschützt! Das muss man extra im IIS (Internet Information Server - also dem Gegenstück zum Apache) konfigurieren - da diese ansonsten nicht über die ASP.NET Engine laufen. Das habe ich auch schonmal machen müssen - aber das war der Firmen Webserver und da durfte ich auch sowas ;-)

tele 19.07.2007 23:33

AW: [PHP] Download bei Direktlink verhindern
 
Hallo,

lässt sich das nicht viel einfacher über den Referer abfangen? Ich meine wie viele User tampern ihre abgesendeten Daten um den Referer zu verändern?

Gruß

tele

Fabian 20.07.2007 07:50

AW: [PHP] Download bei Direktlink verhindern
 
Ja ein Referer dürfte fast schon reichen, habe mal gerade Gegoogelt -> [URL="http://forum.de.selfhtml.org/archiv/2003/4/t43493/"]Ergebnis bei Selfhtml[/URL].

Gerade durch die Problematik mit den Downloadmanagern würde ich noch gerne wissen, wie ich solche "Zufallsordner" erstelle. Weiß das jemand?

Exit 20.07.2007 10:34

AW: [PHP] Download bei Direktlink verhindern
 
Theoretischer Ansatz dazu:

Mit PHP [LIST][*]Zufallsgenerator anschmeissen der nen Zufälligen String aus x Zeichen aufbaut (die man auch als Ordner verwenden kann - also aufpassen bei Sonderzeichen).[*]Dann diesen Ordner mit dem vorher generierten Namen erstellen (auf dem Server)[*]Dahin die zu downloadende Datei rein kopieren[*]Und den User auf diese Adresse weiterleiten[*]Putzdienst einstellen - welcher nach x Minuten das wieder löscht[/LIST]Vielleicht gibt es auch noch ne Möglichkeit über sowas wie Verknüpfungen - sodass man den User nur eine dynamisch erstellte Verknüpfung als Zieladresse hinstellt - aber dann dir richtige Datei lädt. Das habe ich aber noch nicht probiert. Unter Umständen wird dabei aber vielleicht wieder der original Dateipfad angezeigt - wie gesagt habe sowas noch nicht probiert.

Fabian 20.07.2007 14:11

AW: [PHP] Download bei Direktlink verhindern
 
Hmm ich habe mal ein wenig gestöbert. Das Problem sollte mit Mod Rewrite zu lösen sein, wenn ich es nicht komplet falsch verstanden habe.

Man könnte natürlich auch symbolische Links auf dem Server erzeugen, in den die Dateien dann verknüpft werden, aber dann kann man die Leute nach Ablauf des Links nicht mehr auf eine Startseite zurückverweisen.

Ich werd mal weiterschauen, morgen habe ich erstmal eine Klausur, danach werde ich hoffentlich ein bisschen Zeit finden.

Vorschläge bitte auch weiterhin hier Posten - ich werde allem mal nachgehen.

tele 20.07.2007 14:14

AW: [PHP] Download bei Direktlink verhindern
 
"reinkopieren" ist mal typisch windows ;-). der, der schnelle ergebnisse mag erstellt nen Softlink und erlaubt dem Webserver/PHP an dieser stelle links aufzulösen (die echten files liegen natürlich an einer ordnetlich ge chroot'eten location)

[ich les grad, dass du das schon geschrieben hast ....]

das mit dem zurücklinken machst du einfach über Fehlerseiten - die enthalten bei einem dynamischen ordner dann einen redirekt zur startseite


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.