# Direktes Herunterladen verhindern



## Pol (16. Mai 2013)

Hallo 
Wie kann ich das direkte Herunterladen von .dcx,doc,odt per URL verhindern? Das Herunterladen sollte nur für die Applikations-Anwendern funktionieren. Ich finde leider keine Passende Lösung dafür.

Am besten checkt der Server, ob der User eingeloggt ist (session). Wenn ja, kann er die Date haben. Wenn nein leitet er ihn auf das Login.php zum Einstiegsseite.

Applikation:               http://www.ddoart.ch/contur/index.php
Dateien sind unter: http://www.ddoart.ch/contur/vertraege/  (docx,odt,xls,etc)

Wenn jemand http:// http://www.ddoart.ch/contur/vertraege/lichtsaal.docx    bekommt er heute     die Datei, egal ob er eingeloggt ist oder nicht. 

Danke 
Pol


----------



## Parantatatam (16. Mai 2013)

Du könntest beispielsweise den Zugriff auf diese Dateien per .htaccess verhindern. Dafür erstellst du dann beispielsweise ein PHP-Skript, welches die Dateien einliest und dann ausgibt, falls der Nutzer angemeldet sein sollte.


----------



## Pol (16. Mai 2013)

Hallo 
Danke für die Idee. Ich würde gerne, den Typ der Dateien checken lassen. Ich bin halt kein Crack. Hast du mir einen Beispielcode oder einen Link? 
Mir schwebt vor: Den Zugriff für alle Dateien verhindern, wenn der User nicht eingeloggt ist und auf die Datei index.php weiterleiten. Ansonsten die Datei freigeben. 

Danke
Pol


----------



## Pol (16. Mai 2013)

Hallo 
Ich habe mein Problem mit folgendem Code lösen können. Einfach das "Referer" und "origin" anpassen und den code als .htaccess ins Verzeichnis wo sich die Dokumente befinden platzieren. Damit sind nur die links aus der Applikation funktionsfähig. Alle anderen Requests werden nicht funktionieren.
Danke für alle Hinweise. 


```
###Start here###
SetEnvIfNoCase Referer "^http://www.mpol.ch/demo/" internal 
SetEnvIfNoCase origin "^http://www.mpol.ch/demo/" internal 
<Files *> 
order Deny,Allow 
Deny from all 
Allow from env=internal 
</Files>
###End here###
```


----------



## ComFreek (16. Mai 2013)

Sowas bitte nicht verwenden!

Der _Referer_ ist *sehr, sehr* leicht zu fälschen.

Anderer Lösungsansatz:
Leite alle Weiterleitungen auf die _index.php_ weiter. Für Downloads verwendest du keine direkte URL mehr, sondern z.B. index.php?download=XXX.
In der _index.php_ kannst du nun prüfen, ob der Nutzer eingeloggt ist und die Datei herunterladen darf. Wenn ja, gibst du die Datei einfach mittels PHP-Dateifunktionen (natürlich auch richtige Header setzen) aus!


----------



## Shadowman13 (9. August 2013)

hast du hierfür ein Link für ein Tutorial ?


----------



## ComFreek (9. August 2013)

Shadowman13 hat gesagt.:


> hast du hierfür ein Link für ein Tutorial ?



Für was genau? Ich habe eigentlich keine Liste von Links o. Tutorials, aber Google könnte helfen.

Wie du die Datei genau ausgibst, kannst du vllt. auch aus einem von mir vor ein paar Tagen geschriebenen Code sehen: http://stackoverflow.com/a/18088897/603003


----------

