ebody: Eure Meinung zu dieser htaccess

Hallo,

ich habe eine htaccess erstellt:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} meine.kml
RewriteCond %{HTTP_REFERER} !^http://localhost/dir/seiten/.* [NC] 
RewriteRule ^(.*)$ - [F] 
</IfModule>

Diese soll bewirken, dass die KML Datei von einem JavaScript, welches in http://localhost/dir/seiten/ liegt aus aufgerufen werden kann, aber die KML URL nicht z.B. direkt in die Adresszeile eingegeben werden und so runtergeladen werden kann.

Das funktioniert soweit. Das Script kann die KML nutzen, für mich als Nutzer funktioniert also die Seite. Die URL der KML Datei kann ich nicht direkt im Browser aufrufen.

Meine Bedenken: Wie hoch ist die Wahrscheinlichkeit, das durch die htaccess für viele Nutzer meine Seite nicht funktioniert, weil deren Browser z.B. keinen Referrer sendet?

Es gibt auch Nutzer, die haben z.B. Javascript deaktiviert, das würde mich aber nicht abhalten dennoch Javascript zu verwenden, weil der Anteil viel zu gering ist. Bei der Frage geht es mir darum, ob meine Seite für einen beträchtlichen Anteil evtl. nicht funktionieren könnte.

Gruß ebody

  1. @@ebody

    Diese soll bewirken, dass die KML Datei von einem JavaScript, welches in http://localhost/dir/seiten/ liegt aus aufgerufen werden kann, aber die KML URL nicht z.B. direkt in die Adresszeile eingegeben werden und so runtergeladen werden kann.

    Welchen Sinn soll das haben?

    Jemand, der damit nichts anfangen kann, wird die Ressource nicht direkt im Browser aufrufen.

    Und jemand, der an die Ressource rankommen will, überspringt deine lächerliche Hürde.

    TL;DR: Du f*ckst dich damit nur selbst ins Knie.

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. RewriteCond %{REQUEST_URI} meine.kml
    RewriteCond %{HTTP_REFERER} !^http://localhost/dir/seiten/.* [NC] 
    RewriteRule ^(.*)$ - [F] 
    

    Das Muster ^(.)$ für RewriteRule ist in diesem Umfang herzlich sinnlos. Du schreibst "irgendwas (der Teil . des Musters) zwischen Anfang (^) und Ende ($), und das Irgendwas bitte kopieren (die runden Klammern um .)". Da kannst du es auch gleich bei "irgendwas" belassen und, weil du das Irgendwas nirgends weiterverwendest, dir auch die Kopie sparen. Kurzum: . statt ^(.*)$

    Das Muster in RewriteCond %{REQUEST_URI} meine.kml ist nicht das, was du haben willst. Es passt auf die Wörter meine und kml, die von irgendeinem Zeichen (.) getrennt sind, also meine.kml, meinakml, meinebkml, meineZkml, etc. Zumindest hättest du wohl meine.kml haben wollen.
    Vielleicht möchtest du auch nicht alle URLs, die meine.kml enthalten (/meine.kml, dings/meine.kml/, herrjemeine.kmlistweg, etc), sondern nur eine an einem bestimmten Ort, zum Beispiel im Wurzelverzeichnis (^meine.kml$) oder vielleicht liegt sie auch in /dir/seiten/ (^dir/seiten/meine.kml$).

    Last but not least: Der erste Parameter von RewriteRule ist nicht umsonst ein Muster. Im Moment weist du RewriteRule an, beliebige Pfade zu akzeptieren (.*) und lässt dann mit einer separaten RewriteCond-Zeile den Pfad zu meine.kml rausfiltern. Diese doppelte Prüfung ist sinnlos, schreibe gleich RewriteRule ^pfad/zu/meine.kml$ - [F] und entsorge die erste RewriteCond-Zeile.

    Meine Bedenken: Wie hoch ist die Wahrscheinlichkeit, das durch die htaccess für viele Nutzer meine Seite nicht funktioniert, weil deren Browser z.B. keinen Referrer sendet?

    Das funktioniert wahrscheinlich für niemanden außer dich, weil die verweisende URL auf localhost, also den eigenen Rechner zeigen muss und du wohl der Einzige bist, der deine Seiten auf einem Webserver auf dem eigenen Rechner unterm Schreibtisch laufen lässt.

    Ersetzt du localhost durch die Domain eines Webservers, dürfte meines Erachtens kaum jemand betroffen sein. Beobachte die Meldungen im Fehlerprotokoll deines Webservers, dann weisst du es genau.

    Davon unabhängig halte ich dein ganzes Vorgehen für ein wenig … albern. Wer die KML-Datei haben will, bekommt sie auch. Dass sie nur mit passender Referer:-Zeile zu haben ist, fällt schnell auf, und beliebige Referer:-Angaben zu senden ist nun wirklich kein Problem.

  3. hallo

    Meine Bedenken: Wie hoch ist die Wahrscheinlichkeit, das durch die htaccess für viele Nutzer meine Seite nicht funktioniert, weil deren Browser z.B. keinen Referrer sendet?

    Der referrer ist unzuverlässig. Aber falls man wirklich sowas braucht, dann kann man via Javascript ein Referrer-Cookie dynamisch setzen.

  4. Wer die KML-Datei sehen will, der sieht diese in den Entwicklertools, die inzwischen jeder Browser hat.

    Fazit:

    • Wer z.B. einen Proxy hat, der die Referer unterdrückt, der bekommt auf Deiner Seite keine Funktion, kann das auch nicht umgehen. Das ist Mist.
    • Wer die Deine tolle kml-Datei sehen will, der sieht diese - und zwar ohne Anstrengung - mit ein paar Klicks.

    Überlege ob Du einen Teil der Benutzer verärgern willst um den kruden Versuch zu wagen, etwas zu erreichen, was PER DEFINITION nicht erreichbar ist.

    Und bitte, bleib bei Deinem Ursprungs-Posting!

    1. Hallo Regina Schaukrug,

      Und bitte, bleib bei Deinem Ursprungs-Posting!

      Welches dieses ist: Download von Dateien verhindern

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
  5. Hallo,

    hast du mal einen Link, damit man sich das mal ansehen kann?

    Gruß
    Jürgen