Andi90: Problem mit .htaccess

Hallo, Wie kann ich einen Ordner komplett sperren und Zugriff nur VON einer externen, klar definierten PHP-Datei erlauben?


Bisherige Versuche:

order deny,allow deny from all

<Files xxxxxx.php> order deny,allow allow from all </Files>

...kann ja nicht funktionieren, da diese Instruktion (wenn ich das richtig interpretiere) zwar den Zugriff AUF die PHP-Datei erlaubt, nicht aber auf andere, gesperrte Dateien DURCH diese PHP-Datei.

Hab dann einen Ausflug in die Stoßrichtung "Versuch und Irrtum" unternommen, und mit

order deny,allow allow from xxxxxxx.php

etc. herumexperimentiert, hat aber nicht zum Erfolg geführt.


Vielen Dank für Eure Hilfe! Andi.

  1. Tach!

    Wie kann ich einen Ordner komplett sperren und Zugriff nur VON einer externen, klar definierten PHP-Datei erlauben?

    Die Information "kommt von einer PHP-Datei" existiert in einem Request nicht. Requests kommen von einer IP-Adresse, da könntest du die von dem Server eintragen, der zugreifen darf. Alternativ erstellst du eine Zugriffsbeschränkung per HTTP-Authentication und bringst dem Script bei, beim Zugriff den entsprechenden Nutzernamen und Passwort anzugeben.

    dedlfix.

    1. Hallo, danke für die schnelle Antwort! 😀 Ja, das klingt sehr logisch und einleuchtend.

      Einfacher scheint es mir, Requests mit der IP-Adresse des Servers zu erlauben.

      Da das Programm aber nicht auf meinem eigenen privaten Server liegt, hätte somit (so ich das richtig begriffen habe) jeder, dessen Inhalte auf demselben Server gehostet werden, offenen Zugang zu den Dateien.

      ...darf ich dich fragen, welche Strategie du (der sich unbestritten besser mit der Materie auskennt) in meinem Fall anwenden würdest?

      Danke! Andi

      1. Tach!

        Da das Programm aber nicht auf meinem eigenen privaten Server liegt, hätte somit (so ich das richtig begriffen habe) jeder, dessen Inhalte auf demselben Server gehostet werden, offenen Zugang zu den Dateien.

        Richtig, deswegen auch der zweite Teil mit der Authentifizierung in meiner Antwort. Die Zugangsdaten müssen sich dazu auch in irgendeiner Form auf dem Server befinden, aber da sollte im Prinzip die grundlegende Abschottung der Anwendungen untereinander dafür sorgen, dass da keiner hingreift.

        dedlfix.

        1. Alles klar, werd mal schauen, was ich zu dem Thema Authentifizierung finde. Danke!

          1. Hallo,

            ok, komme leider doch nicht zurecht.

            Ich stoße dauernd auf Login-Formular Tutorials [weiß vielleicht auch nicht genau wonach ich suchen muss].

            Wie implementiere ich eine Authentifizierung automatisch in die externe PHP-Datei, sodass diese auf einen Subordner zugreifen kann, ohne dass der Benutzer aktiv das Passwort eingeben muss?

            Danke für wohlgemeinte Unterstützung, MfG Andi.

            1. Tach!

              Wie implementiere ich eine Authentifizierung automatisch in die externe PHP-Datei, sodass diese auf einen Subordner zugreifen kann, ohne dass der Benutzer aktiv das Passwort eingeben muss?

              Nun, die Frage wäre zunächst einmal, wie greift denn das Script auf diesen Webserver zu? Welche Funktion(en) erzeugen den Request? Danach wäre die Frage zu klären, wie man diesen Funktionen die Zugangsdaten übergeben kann.

              Vielleicht hilft es auch, wenn du mal in allgemeinen Worten beschreibst, was eigentlich genau passieren soll. Es kann gut sein, dass du was anderes willst, als ich aus der Fragestellung entnommen habe.

              dedlfix.

              1. Hallo, Bastle gerade mit RewriteCond und RewriteRule, ohne nennenswerte Ergebnisse... 😂

                Zugriff erfolgt [bis jetzt] relativ unspektakulär via img-Tag, d.h. <img src="subfolder/img.jpg">

                Nun scheitere ich [bis jetzt] daran, meiner PHP-Datei den Zugriff via img-Tag zu erlauben, GLEICHZEITIG aber den direkten Zugriff via manuellem Input in die Adressleiste (url.com/subfolder/img.jpg) zu untersagen -

                • alle meine Versuche in die Richtung haben immer auch die PHP-Datei ausgesperrt, sodass die Bilder nicht mehr angezeigt wurden.

                Danke für deine Ratschläge − Andi.

                1. Tach!

                  Zugriff erfolgt [bis jetzt] relativ unspektakulär via img-Tag, d.h. <img src="subfolder/img.jpg">

                  Das ist kein Zugriff seitens deines PHP-Scripts. Das ist lediglich ein Verweis, und diesem folgt der Browser des Besuchers. Also kommt der Request nicht von einem Server sondern von potentiell überall her. Du möchtest also aus Sicht der Browser deiner Besucher, dass man nur zugreifen darf, wenn man vorher das PHP-Script angefragt hat.

                  Mir fallen da zwei Wege ein. Zum einen könnte der PHP-Script-Aufruf einen Cookie setzen und mit einer RewriteCond könntest du den auswerten. Zum anderen könntest du alle Verwiese so umschreiben, dass sie auf einem Script landen. Das prüft die Berechtigung und liefert die gewünschte Datei als Response aus oder eben nicht.

                  dedlfix.

  2. Hallo Andy,

    wenn ich es richtig verstanden habe, willst Du einen Ordner, auf dessen Inhalt niemand aus dem Web zugreifen kann. Dann ist eine .htaccess mit

    order deny,allow deny from all

    genau richtig.

    Dein aufzurufendes php-Script muss natürlich woanders liegen und kann die Dateien in dem geschützten Ordner problemlos lesen. Es greift ja über das File-System und nicht über http auf die Dateien zu.

    Passt's? Oder habe ich da etwas falsch verstanden?

    Viele Grüße

    Wilfried

    1. Habe gerade erst den Hinweis von Regina Schaukrug gelesen: Hinweis: order, allow, deny nicht mehr benutzen!

      Also:

      Require all denied
      

      statt:

      Order deny,allow
      Deny from all
      

      siehe auch: Apache: Upgrading to 2.4 from 2.2