Peter Nack: Apache - Deeplinks verhindern

Guten Tag allerseits,

ich habe ein Problem mit direkten Zugriffen auf meine Templatefiles.

Mein Portal ist so aufgebaut, dass die HTML-Dateien unter
http://example.org/sources/views/
liegen.

Die Templates liegen unter
http://example.org/sources/gui/templates/
und werden als PHP geparsed.

Rufe ich nun jedoch ein Template direkt auf:
http://example.org/sources/gui/templates/overview.tpl
so bekomme ich
a) die Seite zu sehen und
b) logischerweise auch Unmengen an Fehler.

Meine Frage ist nun, wie kann ich entweder
a) den direkten Zugriff verhindern und/oder
b) statt dessen eine entsprechende Seite einbinden
?

Ich habe im Archiv was zum Thema Apache/Referrer gelesen. Doch diese Moeglichkeit missfaellt mir eigentlich.
Gibt es da nicht schoenere Methoden?

Besten Dank im Voraus
MfG
Peter

  1. Hi!

    Meine Frage ist nun, wie kann ich entweder
    a) den direkten Zugriff verhindern und/oder

    Leg sie außerhalb des Documentroot ab. Das ist die beste Lösung.

    b) statt dessen eine entsprechende Seite einbinden?

    Wenn das nicht geht, verbiete in der Webserver-Konfiguration alle Zugriffe auf das Verzeichnis (oder die entsprechenden Dateien).

    Lo!

    1. Hallo dedlfix,

      super, Danke!

      Mit

      <Files *.tpl>
        ForceType application/x-httpd-php
        Order deny,allow
        Deny from all
      </Files>

      funktioniert es wie gewuenscht ;-)

      MfG
      Peter

      1. Hallo Peter,

        <Files *.tpl>
          ForceType application/x-httpd-php
          Order deny,allow
          Deny from all
        </Files>

        das ist so, als würdest du die Haustür verriegeln und dann im Hausflur ein Schild aufhängen: Besucher bitte hier rechts.

        Die ForceType-Direktive zieht ja nur, wenn diese Dateien über einen HTTP-Request angefordert werden. Und genau das verbietest du nun. ForceType kann hier also ersatzlos entfallen.

        Alternativ könntest du "Deny from all" für das ganze Verzeichnis setzen (ohne Files-Container), wenn alle Templates in einem Verzeichnis liegen und sonst nichts darin ist, was über HTTP zugänglich sein soll.

        Ciao,
         Martin

        --
        Man soll den Tag nicht vor dem Abend loben.
        Und den Mann nicht vor dem Morgen.
          (alte Volksweisheit)
      2. Hi!

        <Files *.tpl>
          ForceType application/x-httpd-php
          Order deny,allow
          Deny from all
        </Files>

        Bedenke: Wenn der Apache eine Datei nicht ausliefern soll, so muss er auch nicht wissen, wie er damit umzugehen hat. Der Typ ist ihm also komplett egal. Der Zugriff auf deine Template-Dateien soll ausschließlich über das Dateisystem erfolgen, so wie es bei PHPs include oder fopen() oder file_get_contents() der Fall ist. Und wie gesagt, außerhalb des DocumentRoots des Apachen abgelegt, existiert das Problem der unberechtigten Zugriffe gleich gar nicht.

        Lo!

      3. Hallo,

        Ok, nun habe ich es verstanden.
        Nochmal danke fuer eure Hilfe!

        MfG
        Peter