Fabienne: htaccess: Schutz gegen Traffic-Klau

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

  1. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. 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

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. 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

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
          1. 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

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. 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

              --
              "It's amazing I won. I was running against peace, prosperity, and incumbency."
              George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
              Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
              1. Hoi,

                Und warum hilft jeder regulärer Ausdruck bei Fabiennes Problem?

                Das wüßte ich auch gerne.

                Grüßle

                1. 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

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  O o ostern ...
                  Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. 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

                    1. 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

                      --
                      Warum nennt sich Andreas hier MudGuard?
                      Schreinerei Waechter
                      O o ostern ...
                      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                      1. 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

                        1. 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

                          1. 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

                            1. 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

                              1. 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

                                1. 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

        2. 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

          1. 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

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.