Ankündigung

Einklappen
Keine Ankündigung bisher.

htaccess-Code gegen Hotlinking

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo Ihr zwei,

    sehr coole und gewinnbringende Lösungserarbeitung. Für solche Diskussionen halte ich ein Forum noch immer für ideal

    Viele Grüße und danke vorab von nachfolgenden Lesern

    Nils Dornblut
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

    Kommentar


      #17
      Zitat von Nils Dornblut Beitrag anzeigen
      Für solche Diskussionen halte ich ein Forum noch immer für ideal
      Definitiv. Im alten Forum gab es auch erheblich mehr Anfragen / Threads dieser Art. Vermutlich haben viele der alten Nutzer das Forum noch nicht wiederentdeckt.

      Gruß
      Jan
      Two hours of trial and error can save ten minutes of manual reading.

      Kommentar


        #18
        Zitat von Enigma Beitrag anzeigen
        Definitiv. Im alten Forum gab es auch erheblich mehr Anfragen / Threads dieser Art. Vermutlich haben viele der alten Nutzer das Forum noch nicht wiederentdeckt.
        Ja, wir weisen schon fleißig im Blog und in vielen Newslettern (besonders in denen zu PHP) auf das Forum hin. Das wird schon noch mehr wieder werden

        Viele Grüße

        Nils

        Blog - Facebook - Twitter
        Communitybetreiber: domainfactory GmbH
        Impressum / Pflichtangaben

        Kommentar


          #19
          So, jetzt habe ich es mit zwei Testtools im Web ausprobiert, sowohl mit DF als auch mit einem Server eines anderen Hosters.

          Funktioniert leider bei beiden Hostern nicht. Die Bilder werden in den Testtools immer angezeigt, d.h., es ist ein Hotlinking möglich. Ich habe mehrere Bilder, .jpg und .png, ausprobiert, mit und ohne extra RewriteEngine On in meinem extra Block.
          Vorher immer den Browsercache geleert.

          Der Code ist genau wie oben, als extra Block nach dem WP-Standard-Code:
          HTML-Code:
          # BEGIN Hotlinking unterbinden
          <IfModule mod_rewrite.c>
          RewriteCond %{HTTP_REFERER} !^$
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?domain\.de(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\.[^/]+(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?bing\.[^/]+(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?facebook\.com(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?twitter\.com(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?pinterest\.com(/.*)?$ [NC]
          RewriteCond %{HTTP_REFERER} !^https?://(www\.)?xing\.com(/.*)?$ [NC]
          RewriteRule \.(jpe?g|png|gif|svg|pdf|mp3)$ - [F]
          </IfModule>
          # END Hotlinking unterbinden
          Stimmt etwas an der RewriteRule nicht?
          Zuletzt geändert von Martin11; 17.11.2019, 21:45.
          Grüße,

          Martin

          Kommentar


            #20
            Zitat von Martin11 Beitrag anzeigen
            Funktioniert leider bei beiden Hostern nicht. Die Bilder werden in den Testtools immer angezeigt, d.h., es ist ein Hotlinking möglich. Ich habe mehrere Bilder, .jpg und .png, ausprobiert, mit und ohne extra RewriteEngine On in meinem extra Block.
            Vorher immer den Browsercache geleert.

            Der Code ist genau wie oben, als extra Block nach dem WP-Standard-Code:
            HTML-Code:
            # BEGIN Hotlinking unterbinden
            <IfModule mod_rewrite.c>
            RewriteCond %{HTTP_REFERER} !^$
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?domain\.de(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\.[^/]+(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?bing\.[^/]+(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?facebook\.com(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?twitter\.com(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?pinterest\.com(/.*)?$ [NC]
            RewriteCond %{HTTP_REFERER} !^https?://(www\.)?xing\.com(/.*)?$ [NC]
            RewriteRule \.(jpe?g|png|gif|svg|pdf|mp3)$ - [F]
            </IfModule>
            # END Hotlinking unterbinden
            Stimmt etwas an der RewriteRule nicht?
            Sieht eigentlich korrekt aus. Wird kein Refer(r)er mitgesendet, werden die Bilder allerdings angezeigt. Das sollte auch so bleiben, da Du sonst ungewollt Besucher aussperrst.

            Du kannst allerdings die entsprechende Zeile

            Code:
            RewriteCond %{HTTP_REFERER} !^$
            zum Testen mal deaktivieren (# davorsetzen). Was passiert dann?

            Falls sich nichts ändert, verlinke die verwendeten Tools bitte mal.

            Gruß
            Jan
            Two hours of trial and error can save ten minutes of manual reading.

            Kommentar


              #21
              Wenn ich die erste Refererzeile per "#" deaktiviere, dann erscheint kein Bild mehr, in beiden Tools. Also so, als ob Hotlinking wie gewünscht unterbunden wäre.

              Auch wenn es nicht mehr nötig sein sollte, die beiden Tools sind https://altlab.com/hotlinkchecker.php und https://www.free-webhosts.com/hotlinking-checker.php.
              Zwei von den vielen, die im Web gerne genutzt werden für solche Zwecke.
              Zuletzt geändert von Martin11; 18.11.2019, 02:05.
              Grüße,

              Martin

              Kommentar


                #22
                Zitat von Martin11 Beitrag anzeigen
                Wenn ich die erste Refererzeile per "#" deaktiviere, dann erscheint kein Bild mehr, in beiden Tools. Also so, als ob Hotlinking wie gewünscht unterbunden wäre.
                Das würde bedeuten, dass von den Testern zumindest kein Refer(r)er ankommt. Im Normalfall bedeutet das auch, dass keiner gesendet wird. Was aber recht eigenartig wäre, da zumindest beim erstgenannten Checker die von Dir deaktivierte Zeile (die Du wieder aktivieren solltest) im Tutorial explizit empfohlen wird. Teste doch noch mal, notiere dann den genauen Zeitpunkt und schaue in die Logs, sobald sie verfügbar sind.

                Gruß
                Jan
                Two hours of trial and error can save ten minutes of manual reading.

                Kommentar


                  #23
                  Hm, also ein Hotlinking-Testtool, das keinen Referer mitgibt, ist das nicht sinnwidrig? Ist das nicht Grundvoraussetzung für ein Testtool?
                  Habe übrigens noch ein drittes Tool ausprobiert. Ist dort dasselbe, mit aktivierter Refererzeile wird das Bild angezeigt, deaktiviert nicht.

                  Du meinst, nochmal mit deaktivierter Zeile testen und dann wo genau auf welchen Eintrag in den Logs prüfen (habe das noch nie gemacht)?

                  Wie wäre es, wenn ich bei einer anderen Website von mir eine Testseite erstelle (nur ein paar Textabsätze), veröffentliche und dort versuche das Bild der getesteten Site per Hotlinking einzubinden?
                  Hotlinking heißt ja nur, einen img-tag zu erstellen, der im src dann die URL der getesteten Website hat. Mehr wird doch nicht gemacht meines Wissens und das kann ich selbst nachahmen. Das wäre vielleicht der sicherste Test.

                  Oder was passiert, wenn ich hier im Forum einen solchen Bildlink angebe? Müsste eigentlich auch unterbunden werden und testbar sein.
                  Zuletzt geändert von Martin11; 18.11.2019, 14:13.
                  Grüße,

                  Martin

                  Kommentar


                    #24
                    Zitat von Martin11 Beitrag anzeigen
                    Hm, also ein Hotlinking-Testtool, das keinen Referer mitgibt, ist das nicht sinnwidrig? Ist das nicht Grundvoraussetzung für ein Testtool?
                    Habe übrigens noch ein drittes Tool ausprobiert. Ist dort dasselbe, mit aktivierter Refererzeile wird das Bild angezeigt, deaktiviert nicht.
                    Sorry, ich war nach durchwachter Nacht heute Morgen nicht mehr ganz fit.

                    Den Refer(r)er sendet natürlich Dein Browser, nicht die jeweilige Site. Es könnte also sein, dass Du das Senden irgendwie unterbindest, entweder über eine Browsereinstellung (z. B. via about:config in Firefox), ein Plugin zur Änderung des Referers oder irgendeine Sicherheitssoftware (kann ebenfalls ein Browser-Plugin sein, aber ggf. auch ein separat laufendes Programm - ich bin nicht sicher, ob z. B. manche Internet-Security-Suiten das als Privacy-Feature bieten).

                    In bestimmten Fällen wird standardmäßig kein Referer gesendet (siehe https://developer.mozilla.org/de/doc...ders/Referer):

                    Ein Referer-Header wird von einem Browser nicht gesendet, wenn:
                    • Der verweisende Ressource ist eine lokale "file" oder "data" URI ist.
                    • Eine unsichere HTTP-Anfrage benutzt wird und die verweisende Seite in einem sicheren Protokoll (HTTPS) empfangen wurde.
                    Fakt ist jedenfalls, dass Deine Regeln greifen, wenn ein leerer Referer ausgeschlossen wird. Also wird offenbar auch keiner gesendet.

                    Gruß
                    Jan
                    Two hours of trial and error can save ten minutes of manual reading.

                    Kommentar


                      #25
                      Zitat von Enigma Beitrag anzeigen

                      Sorry, ich war nach durchwachter Nacht heute Morgen nicht mehr ganz fit.
                      Macht nichts.
                      Schlafen ist offenbar generell nicht so das deine...
                      Ich bin zwar auch ein Nachtmensch und gehe sehr spät ins Bett, schlafe dann aber auch länger morgends.

                      Zitat von Enigma Beitrag anzeigen


                      Den Refer(r)er sendet natürlich Dein Browser, nicht die jeweilige Site. Es könnte also sein, dass Du das Senden irgendwie unterbindest, entweder über eine Browsereinstellung (z. B. via about:config in Firefox), ein Plugin zur Änderung des Referers oder irgendeine Sicherheitssoftware (kann ebenfalls ein Browser-Plugin sein, aber ggf. auch ein separat laufendes Programm - ich bin nicht sicher, ob z. B. manche Internet-Security-Suiten das als Privacy-Feature bieten).
                      Also hängt alles am Browser. Ich weiß nicht, ob das die "ganze Wahrheit" ist, aber laut config habe ich diesbezüglich die Standardeinstellung und den referer nicht deaktiviert, siehe anbei, dort ist der Standardwert 2 drin für sendReferer.
                      Eine extra Einstellungsmöglichkeit des referers in den Datenschutzeinstellungen habe ich im FF nicht gefunden.

                      Wie kann ich sicher gehen, dass mein Browser einen Referer sendet?

                      Chrome nutze ich fast nie und habe dort nichts verstellt. Dort wird das Bild bei unverändertem Code mit gültiger ersten Refererzeile ebenfalls nicht geblockt, sondern angezeigt.

                      Klicken Sie bitte auf die Grafik für eine vergrößerte Ansicht

Name: referer.JPG
Ansichten: 89
Größe: 47,5 KB
ID: 2874
                      Angehängte Dateien
                      Zuletzt geändert von Martin11; 18.11.2019, 23:37.
                      Grüße,

                      Martin

                      Kommentar


                        #26
                        Zitat von Martin11 Beitrag anzeigen
                        Du meinst, nochmal mit deaktivierter Zeile testen und dann wo genau auf welchen Eintrag in den Logs prüfen (habe das noch nie gemacht)?
                        Um darauf noch mal zurückzukommen: In den Access-Logs taucht üblicherweise der Refer(r)er auf. So könnte ein Eintrag aussehen:

                        Code:
                        51.158.0.0 - - [12/Nov/2019:06:10:59 +0100] "GET /assets/images/bild.jpg HTTP/2.0" 200 24902 "https://www.meine-domain.de/unterverzeichnis" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0" 62 4980
                        Der Teil, der mit "GET" beginnt, ist der Aufruf des Bildes durch den Browser, danach kommen der HTTP-Statuscode, die übertragenen Bytes und dann der Referer. Hier kannst Du also ablesen, was tatsächlich übertragen wurde. In dem Fall sollte der Referer dort eigentlich leer sein.

                        Dazu würde ich den leeren Referer auch erlauben, also die entsprechende .htaccess-Zeile aktivieren.

                        Teste es sonst auch mal von einem anderen Browser und auch von einem anderen Gerät aus (PC, Tablet, Smartphone) und vergleiche die Einträge.

                        Gruß
                        Jan
                        Two hours of trial and error can save ten minutes of manual reading.

                        Kommentar


                          #27
                          Wo finde ich denn die Access-Logs?
                          Die betreffende Zeile müsste dann also statt "https://www.meine-domain.de/unterverzeichnis" die URL der Testttols zeigen und danach meinen FF.

                          Ich habe jetzt die erste Referer-Zeile wieder erlaubt, also wie es eigentlich sein sollte, bei beiden Hostern.
                          In Chrome habe ich erneut mit den beiden Tools getestet und es war wieder dasselbe wie im FF, d.h., die Bilder werden angezeigt, bei beiden Hostern.
                          Kommentiere ich die erste Zeile aus, wird wieder kein Bild angezeigt.

                          Beim Chrome habe ich ganz bestimmt nichts eingestellt mit Datenschutz oder Referer und auch dort ist es dasselbe. Das heißt, auch dort müsste der Referer per default ausgeschaltet sein?

                          Könnte vielleicht die Erklärung sein, dass meine Websites noch http haben und die Testtools https?
                          Du hast das oben schon mal von Mozilla zitiert: "Eine unsichere HTTP-Anfrage benutzt wird und die verweisende Seite in einem sicheren Protokoll (HTTPS) empfangen wurde."
                          Aber die Formulierung habe ich nicht verstanden.
                          Das würde alles erklären, oder?
                          Zuletzt geändert von Martin11; 19.11.2019, 02:59.
                          Grüße,

                          Martin

                          Kommentar


                            #28
                            Zitat von Martin11 Beitrag anzeigen
                            Könnte vielleicht die Erklärung sein, dass meine Websites noch http haben und die Testtools https?
                            Du hast das oben schon mal von Mozilla zitiert: "Eine unsichere HTTP-Anfrage benutzt wird und die verweisende Seite in einem sicheren Protokoll (HTTPS) empfangen wurde."
                            Aber die Formulierung habe ich nicht verstanden.
                            Das würde alles erklären, oder?
                            Ja, genau.

                            Gruß
                            Jan
                            Two hours of trial and error can save ten minutes of manual reading.

                            Kommentar


                              #29
                              Zitat von Enigma Beitrag anzeigen

                              Ja, genau.

                              Gruß
                              Jan
                              O.K.
                              Das bedeutet zweierlei:
                              1. Solange ich noch http habe, wird wohl fast immer der Referrer fehlen, denn mittlerweile haben die meisten https und wer weiß, was Hotlinking ist, wird wohl kein Amateur sein und seine Site vermutlich bereits auf https umgestellt haben.
                              Folglich müsste ich bis zur eigenen https-Umstellung die erste Referrerzeile eigentlich auskommentieren, ansonsten kann fast jeder Hotlinking betreiben. Oder gibt es eine Code-Möglichkeit, beides abzudecken: Egal, ob Referrer vorhanden oder nicht, das Rewrite soll in jedem Fall immer greifen? Oder existiert diese Möglichkeit bereits durch das Auskommentieren/Verzichten auf die Referrerzeile, d.h., es wird beides abgedeckt?

                              2. Mit aktivierter Referrerzeile würde der Code dann das Hotlinking wie gewünscht unterbinden, wenn ich von einer anderen http-Site von mir mich selbst testweise "hotlinken" würde. Oder gibt es noch einen anderen Grund, warum das dann trotzdem nicht klappen sollte?
                              Zuletzt geändert von Martin11; 19.11.2019, 13:20.
                              Grüße,

                              Martin

                              Kommentar


                                #30
                                Warum hast du kein Zertifikat?
                                MfG,
                                masterframe

                                Kommentar

                                Lädt...
                                X