Knud: .htaccess: Bestimmte Bilder freigeben

Hallo zusammen,

ich habe das Verzeichnis http://www.meineseite.de/images vor Bilderklau mit einer .htaccess mit folgendem Inhalt geschützt:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?meineseite.de(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?meineseite2.de(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(intern.)?meineseite.de(/.*)?$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(intern.)?meineseite2.de(/.*)?$ [NC]
RewriteRule .(gif|jpg)$ - [F]

Jetzt möchte ich bestimmt Bilder wieder freigeben.
Im Verzeichnis images/fotos befindet sich von einem Bild immer eine große und eine kleine Version.
Die kleine Version ist immer nach dem Schema bild001-k.jpg
die große immer bild001-g.jpg benannt.
Alle kleinen Bilder, sprich alle, die mit -k.jpg enden, sollen freigegeben werden.
Ist das mit htaccess machbar?
Danke
Gruß
Knud

  1. Hallo,

    ungetestet würde ich sagen, das müsste so in diese Richtung gehen
    RewriteRule .+([^-^k]).(gif|jpg) - [F]

    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/
    1. Hi,

      ungetestet würde ich sagen, das müsste so in diese Richtung gehen
      RewriteRule .+([^-^k]).(gif|jpg) - [F]

      Warum diese Zeichenklasse?

      Wenn die Anforderung einfach lautet,

      Alle kleinen Bilder, sprich alle, die mit -k.jpg enden, sollen freigegeben werden.

      • dann wuerde ich doch sagen:

      RewriteRule !-k.jpg$ - [F]

      (Da im OP nur von JPEGs die Rede war, nehme ich mal an, der Bezug auf die Endung .gif kann entfallen.)

      MfG ChrisB

  2. hallo,

    ich habe das Verzeichnis http://www.meineseite.de/images vor Bilderklau mit einer .htaccess mit folgendem Inhalt geschützt:
    RewriteRule .(gif|jpg)$ - [F]

    Naja, dein "Schutz" besteht darin, daß du sofort den Statuscode 403 (forbidden) sendest. Es gibt auch die Möglichkeit, über die Anweisung Order Zugriffsrechte einzuschränken.
    Wenn du nur bestimmte Dateien "freigeben" willst, eignet sich dafür Files sehr gut.

    Alle kleinen Bilder, sprich alle, die mit -k.jpg enden, sollen freigegeben werden.
    Ist das mit htaccess machbar?

    Jaa, mit einem <Files>-Container.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hi,

      ich habe das Verzeichnis http://www.meineseite.de/images vor Bilderklau mit einer .htaccess mit folgendem Inhalt geschützt:
      RewriteRule .(gif|jpg)$ - [F]

      Naja, dein "Schutz" besteht darin, daß du sofort den Statuscode 403 (forbidden) sendest. Es gibt auch die Möglichkeit, über die Anweisung Order Zugriffsrechte einzuschränken.

      Was sich im Verweigerungsfalle ebenfalls mit einem 403 bemerkbar macht.

      Allerdings will er ja nicht grundsaetzlich den Zugriff verbieten, sondern abhaengig vom gesendeten Referrer. Da nuetzen ORDER BY/ALLOW/DENY recht wenig.

      Wenn du nur bestimmte Dateien "freigeben" willst, eignet sich dafür Files sehr gut.

      Auch das in diesem Falle kaum.

      Alle kleinen Bilder, sprich alle, die mit -k.jpg enden, sollen freigegeben werden.
      Ist das mit htaccess machbar?

      Jaa, mit einem <Files>-Container.

      Nein, mit einer entsprechenden Erweiterung der regulaeren Ausdrucks in der RewriteRule.

      MfG ChrisB

      1. hallo,

        Allerdings will er ja nicht grundsaetzlich den Zugriff verbieten, sondern abhaengig vom gesendeten Referrer.

        Referer sind unzuverlässig. Und was ich bisher an der .htaccess sehe, soll bewirken, daß bei bestimmtem Referer eben "umgeleitet" wird. Nicht aber referer-abhängig Bilder frei oder verboten sind.

        Da nuetzen ORDER BY/ALLOW/DENY recht wenig.

        Ich bin anderer Ansicht. mod_rewrite ist nicht das geeignete Instrument, um bestimmte Dateien zu "schützen", aber in einer .htaccess kann weit mehr stehen als bloß das, was eben für mod_rewrite bestimmt ist.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hi,

          Allerdings will er ja nicht grundsaetzlich den Zugriff verbieten, sondern abhaengig vom gesendeten Referrer.

          Referer sind unzuverlässig.

          Ist mir bekannt, und dem OP vielleicht ebenfalls, wenn er sich ein wenig damit beschaeftigt hat. Trotzdem fuer sein Vorhaben immer noch ein recht gaengiges, und auch halbwegs zielfuehrendes Vorgehen.

          Und was ich bisher an der .htaccess sehe, soll bewirken, daß bei bestimmtem Referer eben "umgeleitet" wird. Nicht aber referer-abhängig Bilder frei oder verboten sind.

          Wenn du nicht weisst, was das Flag F bei einer RewriteRule bewirkt, schlage ich vor, du konsultierst einfach die Doku des Moduls mod_rewrite noch mal.

          Da nuetzen ORDER BY/ALLOW/DENY recht wenig.

          Ich bin anderer Ansicht.

          Vermutlich mal wieder aus Prinzip.

          mod_rewrite ist nicht das geeignete Instrument, um bestimmte Dateien zu "schützen",

          Es geht nicht um "Schutz", sondern um ein Verweigern der Auslieferung von Bildressourcen, wenn ein Request mit einem Referrer herinkommt, der als nicht erwuenscht definiert wurde.
          Das ist bereits implementiert.
          Jetzt kommt eben noch die zusaetzliche Anforderung hinzu, bestimmte Bildressourcen von dieser vom Referrer (dessen Zuverlaessigkeit vollkommen dahingestellt sein lassend) abhaengigen Sonderbehandlung wieder auszunehmen.

          Und dafuer ist mod_rewrite m.E. das Mittel der Wahl.

          Wenn du mir einen Weg zeigen moechtest, wie man *eben dieses* mittels ORDER BY/ALLOW/DENY erreicht, bitteschoen - ich bin immer gerne bereit, etwas dazuzulernen.

          aber in einer .htaccess kann weit mehr stehen als bloß das, was eben für mod_rewrite bestimmt ist.

          Und noch'n Allgemeinplatz ... du bist mal wieder lustig heute.

          MfG ChrisB

          1. hallo,

            Wenn du nicht weisst, was das Flag F bei einer RewriteRule bewirkt, schlage ich vor, du konsultierst einfach die Doku des Moduls mod_rewrite noch mal.

            Wenn du nicht bemerkt hast, daß ich bereits genau auf http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html Bezug genommen habe, liest du am besten meinen Beitrag noch einmal richtig.

            Ich bin anderer Ansicht.
            Vermutlich mal wieder aus Prinzip.

            Selbstverständlich. "Ich bin der Geist, der stets verneint" - der Satz sollte zu deinem allgemeinen Bildungsrepertoire gehören.

            mod_rewrite ist nicht das geeignete Instrument, um bestimmte Dateien zu "schützen",
            Es geht nicht um "Schutz"

            Wenn du ein OP nicht richtig nachliest, ist dir nochmalige Lektüre durchaus zu empfehlen. Bereits der einleitende Satz lautete: "ich habe das Verzeichnis [...] mit einer .htaccess mit folgendem Inhalt geschützt". Hier ist also expressis verbis von "Schutz" die Rede.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
            1. Hi,

              Wenn du nicht weisst, was das Flag F bei einer RewriteRule bewirkt, schlage ich vor, du konsultierst einfach die Doku des Moduls mod_rewrite noch mal.

              Wenn du nicht bemerkt hast, daß ich bereits genau auf http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html Bezug genommen habe, liest du am besten meinen Beitrag noch einmal richtig.

              Du kannst von mir aus Bezug nehmen, auf was du willst - aber im konkreten Zusammenhang sinnvoll sollte es doch bitteschoen sein.

              mod_rewrite ist nicht das geeignete Instrument, um bestimmte Dateien zu "schützen",
              Es geht nicht um "Schutz"

              Wenn du ein OP nicht richtig nachliest, ist dir nochmalige Lektüre durchaus zu empfehlen.

              Dito.

              Bereits der einleitende Satz lautete: "ich habe das Verzeichnis [...] mit einer .htaccess mit folgendem Inhalt geschützt". Hier ist also expressis verbis von "Schutz" die Rede.

              Und durch selektives Zitieren biegst du dir die Sache mal wieder so hin, wie sie dir in den Kram passt.

              Wenn wir jetzt gemeinsam noch mal nachlesen, dann finden wir da ausserdem noch, *wo* *vor* dieser "Schutz" schuetzen soll - damit wird
              a) der Kontext deutlich,
              b) die Berechtigung des Einsatzes von mod_rewrite zu eben diesem Zwecke ersichtlich, und
              c) deine Aussage, das koenne man auch mittels ORDER/ALLOW/DENY umsetzen, stellt sich als unzutreffend heraus.

              Deine urspruengliche Antwort ist im Sinne der Fragestellung schlicht und einfach unbrauchbar, daran gibt es Nullkommanichts zu ruetteln.

              Ob du die Fragestellung nun nicht verstanden *hast* oder mal wieder partout nicht verstehen *wolltest*, kann ich noch nicht mit hinreichender Sicherheit beurteilen  - ich vermute jedoch wieder mal die fuer dich typische Sturheit und das mehr als uebertriebene Herumhacken auf einer vom Frager leicht ungluecklick gewaehlten Formulierung (die nichts desto trotz m.E. absolut eindeutig erkennen liess, *was* er wollte) dahinter.

              Es waere jetzt vielleicht mal an der Zeit, deine kuerzlich anderweitig gemachte Aussage bzgl. deines Umgangs mit eigenen Fehlern auch mit Leben zu fuellen.
              Allein ich fuerchte, daraus wird auch dieses Mal wieder nichts, weil die Sturheit eben doch deine herausragendste Eigenschaft ist und bleibt.

              MfG ChrisB

      2. Hi,

        Allerdings will er ja nicht grundsaetzlich den Zugriff verbieten, sondern abhaengig vom gesendeten Referrer. Da nuetzen ORDER BY/ALLOW/DENY recht wenig.

        Zusammen mit SetEnvIf (und Co.) sollte das durchaus mit deny machbar sein

        SetEnvIf Referer regexforunwantedreferrers du_kumst_hier_net_rein
        order allow,deny
        allow from all
        deny from env=du_kumst_hier_net_rein

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        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,

          Zusammen mit SetEnvIf (und Co.) sollte das durchaus mit deny machbar sein

          Gut, stimmt, das waere eine weitere Moeglichkeit.

          Aber wenn Christoph diese im Hinterkopf gehabt haette, haette er sie ja sicher auch erwaehnt.

          MfG ChrisB

  3. Hello,

    wenn die Bilder ein geminsames Kriterium haben (z.B. im selben Vereichnis liegen), dann würde ich mit Mod Rewrite auf ein Script umleiten und dieses entscheiden lassen, was der Requester als Antwort bekommt. Das ist wesentlich flexible, kann auch Alternativbilder liefern, eine Datenbank dahinter füttern und abfragen, die GD-LIB verwenden und vieles mehr...

    Liebe Grüße

    Tom vom Berg

    --
    Nur selber lernen macht schlau