htaccess: Schutz gegen Traffic-Klau
Fabienne
- webserver
Hallo zusammen,
ich versuche gerade einen Schutz gegen externen Traffic-Klau zu basteln.
Es befinden sich eine Menge Bilder und Videos in diesem Verzeichnis.
Über eine htaccess-Datei habe ich versucht alle externen Zugriffe, die nicht über eine der zwei Domains kommen, auf einen PHP-Datei zu schicken, die dann einen Mail an mich schickt und diesen Verstoß meldet.
Leider hakt es irgendwo....
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.info(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain2.de(/.*)?$ [NC]
RewriteRule .(gif|jpg|GIF|JPG|wmv|WMV|mpg|MPG|mpeg|MPEG)$ http://www.domain.info/trafficklau.php [R,L]
Kann man nicht * (Alle) Dateien in einem Verzeichnis schützen, oder muss man jede Extension extra aufführen?
Hat jemand eine Idee, wo mein Fehler liegt?
Viele Grüße und Dank im Vorraus
Fabienne
Hi,
RewriteRule .(gif|jpg|GIF|JPG|wmv|WMV|mpg|MPG|mpeg|MPEG)$ http://www.domain.info/trafficklau.php [R,L]
Kann man nicht * (Alle) Dateien in einem Verzeichnis schützen, oder muss man jede Extension extra aufführen?
Du kannst anstelle Deines regulären Ausdrucks jeden beliebigen anderen Regulären Ausdruck benutzen.
cu,
Andreas
Hi MudGuard!
Du kannst anstelle Deines regulären Ausdrucks jeden beliebigen anderen Regulären Ausdruck benutzen.
Meinst du jeden beliebigen Ausdruck oder einen Ausdruck, der jede beliebige Zeichenkette zulässt?
MfG H☼psel
Hi,
Du kannst anstelle Deines regulären Ausdrucks jeden beliebigen anderen Regulären Ausdruck benutzen.
Meinst du jeden beliebigen Ausdruck oder einen Ausdruck, der jede beliebige Zeichenkette zulässt?
Hab ich geschrieben: einen Ausdruck, der jede beliebige Zeichenkette zuläßt?
Übrigens, das, was ich geschrieben habe, schließt das, was Du reinzuinterpretieren versuchst, mit ein.
cu,
Andreas
Hi MudGuard!
Hab ich geschrieben: einen Ausdruck, der jede beliebige Zeichenkette zuläßt?
Natürlich nicht.
Übrigens, das, was ich geschrieben habe, schließt das, was Du reinzuinterpretieren versuchst, mit ein.
Jetzt kommen wir zu dem Punkt, den ich nicht verstehe. Warum schließt es das mit ein?
MfG H☼psel
Hi,
Jetzt kommen wir zu dem Punkt, den ich nicht verstehe. Warum schließt es das mit ein?
Weil die Menge aller regulären Ausdrücke auch diejenigen regulären Ausdrücke enthält, die jeden beliebigen Text matchen.
cu,
Andreas
Hi MudGuard!
Jetzt kommen wir zu dem Punkt, den ich nicht verstehe. Warum schließt es das mit ein?
Weil die Menge aller regulären Ausdrücke auch diejenigen regulären Ausdrücke enthält, die jeden beliebigen Text matchen.
Und warum hilft jeder regulärer Ausdruck bei Fabiennes Problem?
MfG H☼psel
Hoi,
Und warum hilft jeder regulärer Ausdruck bei Fabiennes Problem?
Das wüßte ich auch gerne.
Grüßle
Hi,
Und warum hilft jeder regulärer Ausdruck bei Fabiennes Problem?
Das wüßte ich auch gerne.
Wenn jeder reguläre Ausdruck erlaubt ist, sind auch die Ausdrücke erlaubt, die Du haben willst, nämlich die, die eine beliebige URL matchen.
Daß jeder beliebige Ausdruck Dein konkretes Problem löst, habe ich nie behauptet.
cu,
Andreas
Hi,
Daß jeder beliebige Ausdruck Dein konkretes Problem löst, habe ich nie behauptet.
Das meinte ich ja auch gar net.
Ich will ja nicht, dass alle möglichen Domains drauf zugreifen dürfen, sondern vielmehr, dass alle möglichen Dateien (speziell durch Endungen gekennzeichnet) geschützt und nur durch meine Seite aufrufbar sind.
Leider funktioniert es (noch) nicht.
Grüßle
Hi,
Daß jeder beliebige Ausdruck Dein konkretes Problem löst, habe ich nie behauptet.
Ich will ja nicht, dass alle möglichen Domains drauf zugreifen dürfen, sondern vielmehr, dass alle möglichen Dateien (speziell durch Endungen gekennzeichnet) geschützt und nur durch meine Seite aufrufbar sind.
Leider funktioniert es (noch) nicht.
Wenn Du nicht verrätst, was Du versuchst, kann ich Dir auch nicht sagen, was Du falsch machst.
Ich hatte Dich schon vor Stunden gebeten, Deine fehlschlagenden Versuche zu posten.
cu,
Andreas
Hallo,
Ich hatte Dich schon vor Stunden gebeten, Deine fehlschlagenden Versuche zu posten.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.info(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain2.de(/.*)?$ [NC]
RewriteRule .(gif|jpg|GIF|JPG|wmv|WMV|mpg|MPG|mpeg|MPEG)$ http://www.domain.info/trafficklau.php [R,L]
Einfachere Variante (nur eine Domain, nur eine File-Extension):
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.info(/.*)?$ [NC]
RewriteRule .(jpg)$ http://www.domain.info/trafficklau.php [R,L]
Und es funzt trotzdem net....
Sonst noch Ideen?
Nochmals ganz kurz:
Ich will meine Dateien (Filme, Bilder) in einem Verzeichnis gegen Zugriffe (Deep-Linking o.ä.) aus externen Domains schützen. Und zwar würde ich gerne ALLE Daten in diesem Verzeichnis, und nicht nur die mit der bestimmten File-Extension schützen.
Nur die Aufrufe über meine Seite (HTTP_REFERRER) sollen zugelassen sein. (Ja ich weiß, 100%igen Schutz gibt es nicht, aber zumindest mal ein Anfang).
Grüßle Fabienne
Hallo,
Einfachere Variante (nur eine Domain, nur eine File-Extension):
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.info(/.*)?$ [NC]
RewriteRule .(jpg)$ http://www.domain.info/trafficklau.php [R,L]Und es funzt trotzdem net....
Was funktioniert da jetzt nicht? Mein fast identischer Nachbau funktioniert mit diesen RewriteConds und dieser RewriteRule. Wenn man eine *.jpg Ressource anfordert und dabei der Referer nicht leer ist UND der Referer nicht dem Muster entspricht, dann wird statt dessen die Ressource in der RewriteRule ausgeliefert.
Also was funktioniert bei Dir nicht? Funktioniert das rewriting überhaupt? Ist das Modul mod_rewrite geladen? Hast Du mal eine einfachere RewriteRule probiert?
Ist eventuell AllowOverride im entsprechenden <Directory> auf none eingestellt?
viele Grüße
Axel
Hi Axel,
Einfachere Variante (nur eine Domain, nur eine File-Extension):
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.info(/.*)?$ [NC]
RewriteRule .(jpg)$ http://www.domain.info/trafficklau.php [R,L]
Also was funktioniert bei Dir nicht?
Prinzipiell funktioniert es schon, nur eben nicht bei Filmen (wmv), die "ge-streamt" auf der Seite dargestellt werden sollen.
Am besten wäre eine Rule, die ALLE Dateien (wmv, mpg, jpg,....) diese Verzeichnisses gegen externe (von anderen Domains) Zugriffe schützt.
Via PHP eine Schleuse einzubauen ist für den Server eine zu große Belastung, da hier mehrere GB Filmmaterial bereitgestellt werden.
Viele Grüße
Fabienne
Hallo,
Also was funktioniert bei Dir nicht?
Prinzipiell funktioniert es schon, nur eben nicht bei Filmen (wmv),
Auch nicht, wenn Du die Dateierweiterung "wmv" mit einbeziehst?
RewriteRule .(jpg|wmv)$ http://www.domain.info/trafficklau.php [R,L]
die "ge-streamt" auf der Seite dargestellt werden sollen.
Bist Du sicher, dass die dann überhaupt noch via HTTP ausgeliefert werden? Hast Du mal einen Link zu der Seite? Oder poste wenigstens den Quellcode des OBJECTs(EMBEDs) zum Einbinden der Ressource.
viele Grüße
Axel
Hi Alex,
Auch nicht, wenn Du die Dateierweiterung "wmv" mit einbeziehst?
Nein, auch dann nicht.
Bist Du sicher, dass die dann überhaupt noch via HTTP ausgeliefert werden? Hast Du mal einen Link zu der Seite? Oder poste wenigstens den Quellcode des OBJECTs(EMBEDs) zum Einbinden der Ressource.
Warum sollte das nicht via HTTP transferiert werden?
Ich denke, doch, dass alle Objekt einer Website via HTTP transferiert werden, oder??
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="320" height="300" id="video" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=Version=6,4,7,1112">
<param name="background" value="#FFFFFF">
<param name="URL" value="/movies/film_dsl.wmv">
<param name="uiMode" value="full">
<param name="AutoStart" value="1">
<param name="VOLUME" value="40">
<embed src="/movies/film_dsl.wmv" width="320" height="300" volume="40" autostart="1" background="black" url="/movies/film_dsl.wmv" uimode="full"></embed>
</object>
Vielen Dank für Deine Hilfe!
Viele Grüße
Fabienne
Hallo,»»
Auch nicht, wenn Du die Dateierweiterung "wmv" mit einbeziehst?
Nein, auch dann nicht.
Ja, mit dem IE nicht, siehe unten.
Bist Du sicher, dass die dann überhaupt noch via HTTP ausgeliefert werden?
Warum sollte das nicht via HTTP transferiert werden?
Weil es für Streaming Media auch spezielle Live-Streaming Protokolle gibt (RTSP z.B.)
<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="320" height="300" id="video" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=Version=6,4,7,1112">
<param name="background" value="#FFFFFF">
<param name="URL" value="/movies/film_dsl.wmv">
<param name="uiMode" value="full">
<param name="AutoStart" value="1">
<param name="VOLUME" value="40">
<embed src="/movies/film_dsl.wmv" width="320" height="300" volume="40" autostart="1" background="black" url="/movies/film_dsl.wmv" uimode="full"></embed>
</object>
Jap. Das ist HTTP.
Allerdings sendet das Mediaplayer-Plugin im IE leider offensichtlich keinen Referer mit:
Request from: /127.0.0.1 on: 1150785775836
GET /test.html HTTP/1.1
/test.html
Accept: */*
Accept-Language: en-us,de;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive
Request from: /127.0.0.1 on: 1150785776387
GET /movies/film_dsl.wmv HTTP/1.1
/movies/film_dsl.wmv
Accept: */*
User-Agent: NSPlayer/7.10.0.3059
Accept-Encoding: gzip, deflate
Host: localhost
Connection: Keep-Alive
Im Gegensatz zu Gecko (FireFox. Mozilla) und Opera. Wenn Du die wmv Ressource also mit diesen Browsern aufrufst, sollte die RewriteRule greifen.
viele Grüße
Axel
Re Hi
vielen Dank schon mal für die Infos.
Aber trotzdem will mein Server die Dateien nicht ausspuken (obwohl ich die über die richtige Domain aufrufe....)
Ideen?
Viele Grüße Fabienne
Hi,
Aber trotzdem will mein Server die Dateien nicht ausspuken
Das macht er nur zwischen Mitternacht und 1 Uhr morgens ...
Ideen?
Welchen Ausdruck verwendest Du denn jetzt?
cu,
Andreas