Fritz: *.txt files nicht im Browser anzeigen

Hallo,

wie kann ich einigermaßen sicher vermeiden, daß *.txt files nicht im Browser angezeigt werden. Von PHP sollen sie aber verwendet werden können.
Verschieben in ein geschütztes Verzeichnis wäre sicher eine Möglichkeit, aber in meinem Fall sehr aufwendeg.
Im Netz hab ich dazu nur CHMOD 644 gefunden. Aber das ist es nicht.

Gruß Fritz

--
ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
http://webdesign.weisshart.de
  1. hallo,

    wie kann ich einigermaßen sicher vermeiden, daß *.txt files nicht im Browser angezeigt werden.

    Wenn du verhindern willst, daß sie nicht angezeigt werden, willst du sie anzeigen (doppelte Verneinung). Also wo ist das Problem?

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph!

      Wenn du verhindern willst, daß sie nicht angezeigt werden, willst du
      sie anzeigen (doppelte Verneinung).

      Da hätte eigentlich noch ein "SCNR" kommen müssen ... X-)

      ℆, ℒacℎgas

      --
      Bei der intendierten Realisierung der linguistischen Simplifizierung
      des regionalen Idioms resultiert die Evidenz der Opportunität extrem
      apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
      milierter Xenologien konsequent zu eliminieren!
  2. Hallo Fritz!

    wie kann ich einigermaßen sicher vermeiden, daß *.txt files nicht im
    Browser angezeigt werden. Von PHP sollen sie aber verwendet werden
    können.

    Dann benenne Sie nicht als *.txt-Files oder lasse sie von PHP parsen,
    um eine Art Stopp-Mechanismus einzubauen. Wenn du die Datei dann im
    normalen PHP-Skript aufrufst, übergibst du einfach den passenden
    Parameter. Dann wird es schon erheblich schwieriger, die Datei von
    außen zu sehen zu bekommen.

      
    if ($_GET != "parameter") exit;  
    
    

    Verschieben in ein geschütztes Verzeichnis wäre sicher eine
    Möglichkeit, aber in meinem Fall sehr aufwendeg.

    Ist aber de facto die beste Möglichkeit.

    ℆, ℒacℎgas

    --
    Bei der intendierten Realisierung der linguistischen Simplifizierung
    des regionalen Idioms resultiert die Evidenz der Opportunität extrem
    apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
    milierter Xenologien konsequent zu eliminieren!
    1. Argh... ist wohl echt zu spät.

        
      
      > if ($_GET['geheim'] != "parameter") exit;  
      
      ~~~           \*\*\*\*\*\*\*\*\*\*  
        
        
      Errare humanum est ... ;-), ℒacℎgas
      
      -- 
      Bei der intendierten Realisierung der linguistischen Simplifizierung  
      des regionalen Idioms resultiert die Evidenz der Opportunität extrem  
      apparent, den elaborierten und quantitativ opulenten Usus nicht assi-  
      milierter Xenologien konsequent zu eliminieren!
      
  3. Hi!

    wie kann ich einigermaßen sicher vermeiden, daß *.txt files nicht im Browser angezeigt werden. Von PHP sollen sie aber verwendet werden können.
    Verschieben in ein geschütztes Verzeichnis wäre sicher eine Möglichkeit, aber in meinem Fall sehr aufwendeg.
    Im Netz hab ich dazu nur CHMOD 644 gefunden. Aber das ist es nicht.

    Solltest du den Apache als Webserver nutzen, hilft dir die <Files>-Direktive weiter.

    Grüße,
    Fabian St.

    --
    Meine Website: http://fabis-site.net
    --> XHTML, CSS, PHP-Formmailer, Linux
    ---------------------
    fabi@erde ~# whatis spam
    spam: nothing appropriate
    ---------------------
    Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
    1. Hallo Fabian!

      Solltest du den Apache als Webserver nutzen, hilft dir die
      <Files>-Direktive weiter.

      So gehts natürlich auch. (Sogar etwas einfacher als in meinem "Beispiel".)

      ℆, ℒacℎgas

      --
      Bei der intendierten Realisierung der linguistischen Simplifizierung
      des regionalen Idioms resultiert die Evidenz der Opportunität extrem
      apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
      milierter Xenologien konsequent zu eliminieren!
      1. Hi Lachgas!

        So gehts natürlich auch. (Sogar etwas einfacher als in meinem "Beispiel".)

        Ich weiß, darum habe ich es ja auch geschrieben ;-)

        Grüße,
        Fabian St.

        --
        Meine Website: http://fabis-site.net
        --> XHTML, CSS, PHP-Formmailer, Linux
        ---------------------
        fabi@erde ~# whatis spam
        spam: nothing appropriate
        ---------------------
        Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
        1. Hallo Fabian!

          Ich weiß, darum habe ich es ja auch geschrieben ;-)

          ... und das merkt man gleich wieder am "nicht hilfreich"-Hagel :-/

          ℆, ℒacℎgas

          --
          Bei der intendierten Realisierung der linguistischen Simplifizierung
          des regionalen Idioms resultiert die Evidenz der Opportunität extrem
          apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
          milierter Xenologien konsequent zu eliminieren!
    2. Hallo Fabian,

      Solltest du den Apache als Webserver nutzen, hilft dir die <Files>-Direktive weiter.

      Ja, Apache, aber beim ISP.
      Das heißt vermutlich, daß ich nur per .htaccess drauf zugreifen kann.
      Das hab ich eigentlich gehofft.
      Aber auch dazu bin ich nur teilweise fündig geworden:

      AddType image/x-icon .ico
      zum Beispiel schließt .ico _ein_

      Wie schieße ich jetzt .txt _aus_?

      Wär nett, wenn auch dazu noch ein Hinweis käme.

      Gruß Fritz

      --
      ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
      http://webdesign.weisshart.de
      1. Hi,

        Solltest du den Apache als Webserver nutzen, hilft dir die <Files>-Direktive weiter.

        AddType image/x-icon .ico
        zum Beispiel schließt .ico _ein_

        nein, das verknüpft .ico-Dateien mit einem speziellen MIME-Type. Das hat nichts damit zu tun, ob die Datei an sich als Ressource ausgeliefert werden kann.

        Wie schieße ich jetzt .txt _aus_?
        Wär nett, wenn auch dazu noch ein Hinweis käme.

        Wieso "noch"? Was hast Du gegen den, den Du selbst oben zitiert hast?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo Cheatah,

          Wieso "noch"? Was hast Du gegen den, den Du selbst oben zitiert hast?

          Nichts.
          Ich bin nur zu doof, eine zu meinem Anliegen passende Zeile in der richtigen Syntax in die .htaccess zu schreiben.
          Ich weiß, SELF... ;-)
          Aber ich selfe (momentan?) wohl nicht richtig.

          Gruß Fritz

          --
          ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
          http://webdesign.weisshart.de
      2. Hallo Fritz,

        Solltest du den Apache als Webserver nutzen, hilft dir die <Files>-Direktive weiter.
        Ja, Apache, aber beim ISP.
        Das heißt vermutlich, daß ich nur per .htaccess drauf zugreifen kann.

        ich weiß nicht was du damit jetzt meinst, aber <Files> kannst du auch in .htaccess-Dateien einbauen, ein

          
        <Files "*.txt">  
          Deny from all  
        </Files>
        

        sollte also funktionieren (sofern es durch AllowOverride erlaubt ist)

        AddType image/x-icon .ico
        zum Beispiel schließt .ico _ein_
        Wie schieße ich jetzt .txt _aus_?

        das Gegenteil zu AddType ist [link:http://httpd.apache.org/docs-2.0/de/mod/mod_mime.html#removetype@title=RemoveType] - das wird dir aber nicht viel bringen, da du damit lediglich die Zuordung zu einem Mime-Type entfernst.

        Grüße aus Nürnberg
        Tobias

        1. Hallo Tobias,

          <Files "*.txt">
            Deny from all
          </Files>[/code]

          Vielen Dank, das war's.

          Gruß Fritz

          --
          ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
          http://webdesign.weisshart.de
  4. Moin!

    wie kann ich einigermaßen sicher vermeiden, daß *.txt files nicht im Browser angezeigt werden. Von PHP sollen sie aber verwendet werden können.

    Ganz einfach. Apache, Standardkonfiguration: Dateien, die mit ".hta" beginnen werden nicht ausgeliefert. Benenne die Dateien entsprechend um.

    Im Netz hab ich dazu nur CHMOD 644 gefunden. Aber das ist es nicht.

    Na? Was macht das? (Falls Du es klein schreibst...)

    1 Punkt für "Ausführen",
    2 Punkte für "Schreiben"
    4 Punkte für "Lesen".

    So. Erste Stelle ist eine 6 für den Eigentümer.
    Der darf lesen, weil die vier gut in die 6 reinpasst. Rest ist 2. Er darf also auch schreiben. Rest ist 0. Er darf also die Datei also _nicht_ ausführen. (Oder das Verzeichnis nicht "betreten", welches mit chmod 644 "behandelt" wurde.).

    Die beiden weiteren Stellen sind für die Gruppe und (die letzte Stelle) für jeden:
    Die dürfen lesen, weil die vier gut in die 4 reinpasst. Rest ist 0. Sie dürfen also nicht schreiben. Rest bleibt 0. Sie dürfen also die Datei also _nicht_ ausführen. (Oder das Verzeichnis "betreten").

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hallo,

      Im Netz hab ich dazu nur CHMOD 644 gefunden. Aber das ist es nicht.
      Na? Was macht das? (Falls Du es klein schreibst...)

      1 Punkt für "Ausführen",
      2 Punkte für "Schreiben"
      4 Punkte für "Lesen".

      Demnach wäre 600 die Lösung für mein Anliegen.
      Tut's aber nicht. Ich krieg die Datei weiterhin angezeigt.

      Gruß Fritz

      --
      ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
      http://webdesign.weisshart.de
      1. Moin!

        Hallo,

        Im Netz hab ich dazu nur CHMOD 644 gefunden. Aber das ist es nicht.
        Na? Was macht das? (Falls Du es klein schreibst...)

        1 Punkt für "Ausführen",
        2 Punkte für "Schreiben"
        4 Punkte für "Lesen".

        Demnach wäre 600 die Lösung für mein Anliegen.
        Tut's aber nicht. Ich krieg die Datei weiterhin angezeigt.

        Nein! Das kann nicht die Lösung sein!

        Es gibt im wesentlichen zwei Varianten:

        Variante A:

        Der Apache läuft als user "indianer". Die Datei gehört dem user "weisser_mann". Mit chmod 600 kann der Apache die Datei nicht lesen, aber auch nicht von php lesen lassen. - Deine Forderung ist nicht erfüllt.

        Variante B:
        Der Apache läuft als user 'webmaster'. Die Datei, die via FTP übertragen wird, gehört dann bei vielen Hostern auch dem user 'webmaster'. PHP-Skripte, die vom Webserver also 'webmaster' gestartet werden, können die Datei lesen - der Apache aber eben auch aussenden.

        So gehts also auch nicht: chmod ist nicht Dein Weg!

        So zurück zum Apache.

        Der hat eine Konfigurationsdatei, deren Einstellungen Du mit einer Datei '.htaccess' für einzelne Verzeichnisse überschreiben darfst- oder eben nicht.
        In dieser Konfigurationsdatei gibt es eine standardmäßig files-Direktive. Die verbietet das Ausliefern non allem, was mit '.ht' beginnt. Das soll die Dateien '.htaccess', '.htusers', '.htgroups', '-htpasswd' vor der Auslieferung schützen. Niemand, der nicht morgend mit dem Klammerbeutel gepudert wurde, wird diese Zeile in der httpd.conf löschen.

        Also. Benenne Deine 'datei.txt' nach '.ht_datei.txt' um und staune zufrieden. Der Apache wird sie nicht ausliefern, PHO kann aber zugereifen. Wenn php das macht gelten die Regeln des Dateisystems und nicht die des Apache.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. hallo fastix®,

          Demnach wäre 600 die Lösung für mein Anliegen.
          Nein! Das kann nicht die Lösung sein!
          chmod ist nicht Dein Weg!

          ACK.

          In dieser Konfigurationsdatei gibt es eine standardmäßig files-Direktive.

          Nein. Daß sie für .htaccess-Dateien "vorkonfiguriert" ist, hat nichts zu bedeuten.

          Die verbietet das Ausliefern non allem, was mit '.ht' beginnt. Das soll die Dateien '.htaccess', '.htusers', '.htgroups', '-htpasswd' vor der Auslieferung schützen. Niemand, der nicht morgend mit dem Klammerbeutel gepudert wurde, wird diese Zeile in der httpd.conf löschen.

          Es kann aber gute Gründe geben, anstelle von ".htaccess" eben ".loch_in_der_socke" vorzugeben. Das legt der Server-Administrator fest und teilt es dir als "Web-Kunde" auch mit.

          Also. Benenne Deine 'datei.txt' nach '.ht_datei.txt' um und staune zufrieden.

          Falsch. Wie du weißt, ist laut http://httpd.apache.org/docs-2.0/mod/core.html#files ein solcher <Files ...>-Container auch innerhalb einer .htaccess zulässig. Also nix mit Umbenennen, aber dein _Ansatz_ ist völlig richtig. In diesem Container kannst du dann eben festlegen, daß .txt-Dateien nicht ausgeliefert werden sollen, und die Folge:

          Der Apache wird sie nicht ausliefern, PHO kann aber zugereifen.

          Bingo ;-) Naja, wenn wir das jetzt noch korrekt PHP nennen und den Tippfehler würdevoll übersehen, hast du absolut recht.

          Wenn php das macht gelten die Regeln des Dateisystems und nicht die des Apache.

          Richtig. Aber bisweilen schwer zu verstehen.

          Grüße aus Berlin

          Christoph S.

          1. Moin!

            Es kann aber gute Gründe geben, anstelle von ".htaccess" eben ".loch_in_der_socke" vorzugeben. Das legt der Server-Administrator fest und teilt es dir als "Web-Kunde" auch mit.

            Ähem. (*hüstel*). Wenn der Servermaster/Webmaster die Auslieferung _weiterer_ Files unterbindet ist das ok. Wenn er die .ht*- Dateien ausliefern lässt ganz sicher nicht. Er würde ein Sicherheitsloch graben. Grund ist ganz einfach der, dass die allermeisten Kunden darauf vertrauen werden, dass diese Direktive so gesetzt ist. Wenn jetzt jemand da eine .htpasswd - Datei unterbringt und den Schutz nicht nochmals testet, dann kann es ein bitterböses Erwachen geben. Wer das macht ist morgens mit dem Klammerbeutel gepudert worden. Jedenfalls meiner Meinung nach. Da hilft auch ein Hinweis in der Dokumentation auf Seite 218, Zeile 72 nichts.

            Falsch. Wie du weißt, ist laut http://httpd.apache.org/docs-2.0/mod/core.html#files ein solcher <Files ...>-Container auch innerhalb einer .htaccess zulässig.

            Aber eben nur _wirksam_, wenn die AllowOverride- Direktive auf all gesetzt ist. Und das ist lange nicht bei allen Paketen aller Hoster der Fall.

            Also nix mit Umbenennen, aber dein _Ansatz_ ist völlig richtig.

            Natürlich kann er sich die Arbeit machen und eigene Einstellungen schaffen (wenn er darf). Aber warum nicht vorhandenes Nutzen? Er kann ja auch den womöglich vorhandenen anderen Verbotseintrag benutzen.

            Wenn php das macht gelten die Regeln des Dateisystems und nicht die des Apache.
            Richtig. Aber bisweilen schwer zu verstehen.

            Eigentlich ist das hier nicht so. Ich erzähle meinen Seminarteilnehmern von einem ganz fürchterlichem Bürokrat, der da im Rechner ist und glaubt ein Indianer zu sein. 'PHP' ist sein Schwager (CGI) oder angewachsener Zwilling (Modul), MySQL ist sein Weib (kennt alle Geburtstage auswendig, redet aber derzeit nur mit dem Schwager oder Zwilling und das auch noch per Babyphone...) Dann flechte ich noch den "Donnerbacke" ein (Stichwort: Highspeedidiot) und schon ist das alles ganz leicht zu verstehen.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. Hallo fastix,

              Aber eben nur _wirksam_, wenn die AllowOverride- Direktive auf all gesetzt ist. Und das ist lange nicht bei allen Paketen aller Hoster der Fall.

              Die Info, wie AllowOverride gesetzt ist, finde ich nicht in (meiner) phpinfo.
              Ich muß also probieren, oder den Admin fragen.
              Richtig?

              NB: bei mir klappt die Lösung mit dem <files> Container. Möchte nur ein wenig dazulernen.

              Gruß Fritz

              --
              ie:( br:> va:} ls:[ fo:| ss:{ de:] js:| ch:? zu:)
              http://webdesign.weisshart.de
              1. Hallo Fritz,

                Die Info, wie AllowOverride gesetzt ist, finde ich nicht in (meiner) phpinfo.

                wieso soll das in der Ausgabe von phpinfo() stehen? AllowOverride ist schließlich eine Einstellung vom Apachen ...

                Ich muß also probieren, oder den Admin fragen.

                Ausprobieren dürfte schneller gehen - im schlimmsten Fall bekommst du einen 500er und eine Fehlermeldung im Logfile.

                NB: bei mir klappt die Lösung mit dem <files> Container.

                dann dürfte AllowOverride auf all (bzw. eben auf einem ausreichendem Wert) stehen :-)

                Grüße aus Nürnberg
                Tobias

              2. hallo,

                Die Info, wie AllowOverride gesetzt ist, finde ich nicht in (meiner) phpinfo.

                Kannst du auch nicht darin finden. phpinfo() hat Grenzen.

                Ich muß also probieren, oder den Admin fragen.
                Richtig?

                Ja. Du kannst aber gerne etwas nachlesen in der Apache-Dokumentation. Mit AllowOverride legt der Serveradministrator fest, ob Einträge in einer .htaccess überhaupt etwas bewirken dürfen. AllowOverride kann nicht innerhalb von .htaccess notiert werden. Einen <Files ...>-Container kannst du aber in deiner .htaccess haben und darin wiederum mit allow festlegen, ob nun .txt-Dateien ausgeliefert werden dürfen oder nicht.

                NB: bei mir klappt die Lösung mit dem <files> Container. Möchte nur ein wenig dazulernen.

                Wogegen nun wahrhaftig nichts einzuwenden ist ;-)

                Grüße aus Berlin

                Christoph S.

              3. Hi Fritz!

                Die Info, wie AllowOverride gesetzt ist, finde ich nicht in (meiner) phpinfo.

                Die siehst du auch nicht in der Ausgabe von phpinfo(). Hierzu müsstest du einen Blick in die Konfigurationsdatei des Apachen werfen, auf die du wohl keinen Zugriff hast.

                Ich muß also probieren, oder den Admin fragen.
                Richtig?

                Genau.

                NB: bei mir klappt die Lösung mit dem <files> Container. Möchte nur ein wenig dazulernen.

                Wenn das klappt, dann steht bei dir in der httpd.conf in einem <Directory>-Container:

                  
                AllowOverride All  
                
                

                Grüße,
                Fabian St.

                --
                Meine Website: http://fabis-site.net
                --> XHTML, CSS, PHP-Formmailer, Linux
                ---------------------
                fabi@erde ~# whatis spam
                spam: nothing appropriate
                ---------------------
                Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu: )