tty01: Refer-Check / Bestimmte Links blockieren

Hallo an alle,

ich habe eine kleine Herausforderung mit .htaccess:

Ich habe eine Problem - ich habe einige download-files und möchte sie nur
für Benutzer meiner Seiten freigeben, so dass wenn eine fremde Seite bei
sich einen Link auf meine download-files macht, das mein Server durch
Refer-Check die Anfrage irgendwoanders umleitet.

Z.B.: www.xxx.com/download/001.zip soll nur von www.xxx.com Seiten
erreichbar sein, wenn jemand auf Seiten www.yyy.com einen Link
http://www.xxx.com/download/001.zip aufsetzt, das dieser Link nicht
funktionieren wird und nach dem Refer-Check irgendoanders umgeleitet wird.

Vielen Dank! :)

  1. Hi,

    ich habe eine kleine Herausforderung mit .htaccess:

    [...]

    Vielen Dank! :)

    hm, ja. Abgesehen davon, dass - wie Du selbstverständlich bereits aus dem Archiv weißt - der Referer niemals als verlässlich angesehen werden darf: Wo genau liegt nun Dein Problem?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      hm, ja. Abgesehen davon, dass - wie Du selbstverständlich bereits aus
      dem Archiv weißt - der Referer niemals als verlässlich angesehen werden
      darf: Wo genau liegt nun Dein Problem?

      Mein Problem: existieren Seiten, die meine Donwload-files einfach verlinken ohne
      den Verweiss auf meine Seiten zu machen. Mit anderen Worten sie generieren mir eine
      menge Traffic und nutzen mein Server nur als File-Archiv.

      Ich möchte, dass, nur wenn der Referer von meinen Server kommt, die Download-files
      ausgegeben werden, anderfalls sollte der Zugriff verweigert werden oder auf eine
      "service_not_availible.html" Seite verwiesen werden.

      Vielen Dank! :)

      tty01

      1. Hi,

        Mein Problem:

        nein, Dein Ärgernis.

        Ich möchte,

        Dein Wunsch. Aber wo ist Dein _Problem_?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Mein Problem:

          nein, Dein Ärgernis.

          Ich möchte,

          Dein Wunsch. Aber wo ist Dein _Problem_?

          Also bevor das Spielchen jetzt unnötigerweise auf die Spitze getrieben wird: Der Fragende ohne Name möge sich mit mod_rewrite beschäftigen, die Anleitung dazu findet sich unter http://httpd.apache.org/docs/mod/mod_rewrite.html.

          Für die Prüfung von HTTP_REFERER wird eine RewriteCond-Zeile benötigt, die Blockierung übernimmt die darauf folgend obligatorische RewriteRule-Zeile. Weiterhin brauchst Du RewriteEngine und RewriteBase.
          Ich empfehle dringenst, den richtigen Antwortcode (hier: 403/Forbidden) zu liefern, _keine_ Weiterleitung - mit letzterer wird nämlich kein Client etwas unter allen Umständen sinnvolles anfangen können.

          Gruß,
            soenk.e

          1. Hi Sönke,

            http://httpd.apache.org/docs/mod/mod_rewrite.html.

            Neugierigerweise einige Fragen (mein Fachenglisch lässt halt zu wünschen übrig):
            Habe ich das richtig verstanden, dass man RewriteRule und RewriteCond einfach in eine .htaccess-Datei schreiben kann, sodass diese Regel(n) für alle Zugriffe auf dieses Verzeichnis gelten? Habe ich das ebenfalls richtig verstanden, dass man für die Regel(n) einfach auf Reguläre Ausdrücke zurück greift? Und zu guter letzt, muss in der httpd.conf irgendein Eintrag vorgenommen werden, damit man mod_rewrite verwenden kann?

            Viele Grüße
            Torsten

            1. Hi,

              Habe ich das richtig verstanden, dass man RewriteRule und RewriteCond einfach in eine .htaccess-Datei schreiben kann,

              http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteCond:
              Context: server config, virtual host, directory, .htaccess

              sodass diese Regel(n) für alle Zugriffe auf dieses Verzeichnis gelten?

              Das ist der Zwecke der .htaccess-Konfigurationsdatei.

              Habe ich das ebenfalls richtig verstanden, dass man für die Regel(n) einfach auf Reguläre Ausdrücke zurück greift?

              Ja.

              Und zu guter letzt, muss in der httpd.conf irgendein Eintrag vorgenommen werden, damit man mod_rewrite verwenden kann?

              Das Modul muss eingebunden sein. Ferner sollte, wenn Du diese Datei verwenden willst, Konfiguration per .htaccess zugelassen sein.

              Cheatah

              --
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Hi Cheatah,

                danke erstmal.

                Das Modul muss eingebunden sein.

                Gibt es eine Möglichkeit für mich, das herauszubekommen, wenn ich keinen Einblick in die Konfiguration des Servers habe oder bleibt mir da nur die höfliche Anfrage beim Hoster?

                Viele Grüße
                Torsten

                1. Hi,

                  Das Modul muss eingebunden sein.
                  Gibt es eine Möglichkeit für mich, das herauszubekommen, wenn ich keinen Einblick in die Konfiguration des Servers habe oder bleibt mir da nur die höfliche Anfrage beim Hoster?

                  probier's doch einfach aus :-) Wenn's klappt, ist es eingebunden.

                  Cheatah

                  --
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
                  1. Hi Cheatah,

                    Gibt es eine Möglichkeit für mich, das herauszubekommen, wenn ich keinen Einblick in die Konfiguration des Servers habe oder bleibt mir da nur die höfliche Anfrage beim Hoster?
                    probier's doch einfach aus :-) Wenn's klappt, ist es eingebunden.

                    Mist, ich wusste, das in meiner Frage nach dem 2. Wort noch das "außer durch try and error" fehlt.

                    Viele Grüße
                    Torsten

                    1. Hi Siechfred,

                      Mist, ich wusste, das in meiner Frage nach dem 2. Wort noch das "außer durch try and error" fehlt.

                      probiere es _vorsichtig_ aus. (Syntaxfehler in .htaccess-Dateien produzieren einen HTTP-500 ... und Direktiven von nicht geladenen Modulen _sind_ Syntaxfehler, denn der Apache weiß gar nicht, welche Direktiven es gibt - das wissen nur die Module selbst.)

                      Viele Grüße
                            Michael

                      --
                      T'Pol: I apologize if I acted inappropriately.
                      V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                      (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                       => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                      Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                2. Hi Siechfred,

                  Gibt es eine Möglichkeit für mich, das herauszubekommen, wenn ich keinen Einblick in die Konfiguration des Servers habe

                  "httpd -L" (Achtung, sehr umfangreich)

                  Viele Grüße
                        Michael

                  --
                  T'Pol: I apologize if I acted inappropriately.
                  V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                  (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                   => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                  Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
        2. Du kannst einer .htaccess-Datei nur eine bestimmte IP-Adresse erlauben. Und da Du Deine eigene IP Deines Webspaces kennst, sollte das Dein Problem lösen ...

          1. Hi sirmark,

            Du kannst einer .htaccess-Datei nur eine bestimmte IP-Adresse erlauben.

            Für Clients, ja. Aber hier geht es nicht um den Absender des Requests (d. h. die IP-Adresse des Browsers), sondern um den Referrer, also die Adresse derjenigen Seite, die der Browser (wahrscheinlich ;-) vorher besucht hat. AccessControl über IP greift hier nicht.

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
             => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
      2. Hi tty01,

        Mein Problem: existieren Seiten, die meine Donwload-files einfach verlinken ohne
        den Verweiss auf meine Seiten zu machen.

        Da liegt aber dein Problem, denn wie willst du die herausfiltern? Mit Hilfe des Referers ist es halt relativ unzuverlässig.

        Mit anderen Worten sie generieren mir eine menge Traffic und nutzen mein Server nur als File-Archiv.

        Damit musst du leben, wenn du Files zum _freien_ Download anbietest. Willst du das nicht, bau dir ein Downloadscript, setze ein Cookie oder was auch immer im Rahmen des dir Möglichen liegt.

        Viele Grüße
        Torsten

        1. Hi,

          es stimmt zwar, dass der Referer als Zugangsschutz nicht zu gebrauchen ist, aber als Schutz vor Verlinkung taugt er durchaus.
          Schließlich kann zwar der User seinen Client manipulieren, und damit in alles was durch  referer geschützt ist eindringen, aber der fremde Webmaster, der direkt auf die Dateien verlinkt hat keinen Einfluß auf den Refererstring. Daraus folgt: referersperre als Zugangsschutz ist unbrauchbar (obwohl oft gemacht), aber als verlinkungssperre durchaus zu gebrauchen.

          Gruss

          Marko

          1. Hi Marko,

            Schließlich kann zwar der User seinen Client manipulieren, und damit in alles was durch  referer geschützt ist eindringen, aber der fremde Webmaster, der direkt auf die Dateien verlinkt hat keinen Einfluß auf den Refererstring. Daraus folgt: referersperre als Zugangsschutz ist unbrauchbar (obwohl oft gemacht), aber als verlinkungssperre durchaus zu gebrauchen.

            Worin soll der Unterschied zwischen einem referrer-basierten Zugriffsschutz und einem referrer-basierten Linkschutz bestehen? Ob ein Webmaster auf seiner Seite einen Link auf meine Seite oder auf eine Datei, die ich auf meinem Webspace zum Download bereit halte, anbietet, macht am Ende keinen Unterschied. In beiden Fällen wird auf der Client-Seite entschieden, ob der Referrer übermittelt wird oder eben nicht. Dieses "oder eben nicht" macht die referrer-basierte Verlinkungssperre imho zu einer nicht optimalen Lösung. Da finde ich den Weg über Cookies die bessere Variante.

            Viele Grüße
            Torsten

            1. Hi Siechfred,

              Worin soll der Unterschied zwischen einem referrer-basierten Zugriffsschutz und einem referrer-basierten Linkschutz bestehen?

              ggf. im Defaultwert? Bei einem Zugangsschutz willst Du nur einer Positivliste den Zugang erlauben (ein leerer Referrer wäre negativ), während Du bei einem Link-Schutz einer Negativliste den Zugang verweigern willst (ein leerer Referrer wäre positiv).

              Im einen Fall geht es um den prinzipiellen Zugang, im anderen um den _massenhaften_ Mißbrauch (während der Einzelfall nicht schlimm ist). Das sind durchaus zwei verschiedene Szenarien.

              Ich kenne Sites, die einen solchen Mechanismus verwenden, und halte das gar nicht für sinnlos.

              Viele Grüße
                    Michael

              --
              T'Pol: I apologize if I acted inappropriately.
              V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
              (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
               => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
              Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
              1. Hi,

                Worin soll der Unterschied zwischen einem referrer-basierten Zugriffsschutz und einem referrer-basierten Linkschutz bestehen?
                ggf. im Defaultwert?

                ich sehe den Unterschied eher darin, einen Webmaster daran zu hindern, den Link zu setzen.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hi Cheatah,

                  Worin soll der Unterschied zwischen einem referrer-basierten Zugriffsschutz und einem referrer-basierten Linkschutz bestehen?
                  ggf. im Defaultwert?
                  ich sehe den Unterschied eher darin, einen Webmaster daran zu hindern, den Link zu setzen.

                  Du widersprichst mir gar nicht - Du bist nur eine Meta-Ebene höher.

                  Viele Grüße
                        Michael

                  --
                  T'Pol: I apologize if I acted inappropriately.
                  V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                  (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                   => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                  Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
              2. Hi Michael,

                Bei einem Zugangsschutz willst Du nur einer Positivliste den Zugang erlauben (ein leerer Referrer wäre negativ), während Du bei einem Link-Schutz einer Negativliste den Zugang verweigern willst (ein leerer Referrer wäre positiv).
                Im einen Fall geht es um den prinzipiellen Zugang, im anderen um den _massenhaften_ Mißbrauch (während der Einzelfall nicht schlimm ist). Das sind durchaus zwei verschiedene Szenarien.

                So habe ich es noch gar nicht betrachtet. Du meinst also - um es in meiner gewohnt untechnischen Ausdrucksweise zu sagen - dass bei einer Linksperre mit Blacklist die paar Wissenden, die ihren Referrer ausgeschaltet haben, zu vernachlässigen sind, da die Masse ausgesperrt werden dürfte, wohingegen bei einer Whitelist ausgeschlossen zu werden durchaus als fatal zu bezeichnen wäre?

                Ich kenne Sites, die einen solchen Mechanismus verwenden, und halte das gar nicht für sinnlos.

                Als sinnlos wollte ich ihn nicht hinstellen, nur als nicht 100%ig.

                Viele Grüße
                Torsten

                1. Hi Siechfred,

                  Im einen Fall geht es um den prinzipiellen Zugang, im anderen um den _massenhaften_ Mißbrauch (während der Einzelfall nicht schlimm ist). Das sind durchaus zwei verschiedene Szenarien.
                  So habe ich es noch gar nicht betrachtet. Du meinst also - um es in meiner gewohnt untechnischen Ausdrucksweise zu sagen - dass bei einer Linksperre mit Blacklist die paar Wissenden, die ihren Referrer ausgeschaltet haben, zu vernachlässigen sind, da die Masse ausgesperrt werden dürfte, wohingegen bei einer Whitelist ausgeschlossen zu werden durchaus als fatal zu bezeichnen wäre?

                  ganz genau.

                  Ich kenne Sites, die einen solchen Mechanismus verwenden, und halte das gar nicht für sinnlos.
                  Als sinnlos wollte ich ihn nicht hinstellen, nur als nicht 100%ig.

                  Eben - und der 100%-Anspruch besteht beim Zugangsschutz, während er beim Link-Schutz nicht unbedingt bestehen muß.

                  Viele Grüße
                        Michael

                  --
                  T'Pol: I apologize if I acted inappropriately.
                  V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                  (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                   => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                  Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
          2. Hi,

            es stimmt zwar, dass der Referer als Zugangsschutz nicht zu gebrauchen ist, aber als Schutz vor Verlinkung taugt er durchaus.
            Schließlich kann zwar der User seinen Client manipulieren, und damit in alles was durch  referer geschützt ist eindringen,

            oder aber auch, wenn er oder jemand nach ihm den Referer ungünstig verfälscht, von absolut legitimer Nutzung abgehalten werden.

            aber der fremde Webmaster, der direkt auf die Dateien verlinkt

            Die Betonung liegt hier auf "direkt".

            referersperre als Zugangsschutz ist unbrauchbar (obwohl oft gemacht), aber als verlinkungssperre durchaus zu gebrauchen.

            Nicht wirklich, wirklich nicht.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes