Katja Reinhardt: Hilfe bei htaccess Passwortschutz

Hallo Zusammen,

ich habe derzeit folgendes Problem:

Ich habe eine Website bei Ionos geschalten. Zu dieser Domain habe ich eine Subdomain erstellt, die unter den verbunden Link auch geöffnet werden konnte. Nun wollte ich diese Subdomain mit einem Passwort für andere sperren und habe mir eine .htaccess und eine .htpasswd erstellt. Wenn ich also die Subdomain öffne, kommt auch das Feld mit der Passwortanfrage. Wenn ich aber das Passwort eingegeben habe kommt danach der Fehlercode: "500 Internal Server Error" statt der gewünschten Website. Ich habe den Code der htaccess Dabei etliche male geprüft und ich bin mir im Ungewissen wo der Fehler jetzt genau liegt. Ohne die htaccess Datei lässt sich die Subdomain super öffnen. Somit gehe ich davon aus, der Fehler liegt in der htaccess Datei und oder am falschen cryptcode des Passwortes.

Ich bin mal so frei und stelle hier die htaccess Dadeimenge dazu:

AuthType Basic

AuthName "Geben Sie Ihre Zugangsdaten ein"

AuthUserFile /Neue_Aenderungen_23.11.2020/.htpasswd

require valid-user

Edit Rolf B: .htaccess Datei mit ~~~ eingerahmt.

  1. Hallo Katja,

    ich bin nicht so der große Indianerhäuptling, aber ich würde annehmen, dass er die .htpasswd nicht findet. Du hast ihren Ort absolut angegeben, ab dem Root-Ordner.

    Ist das tatsächlich der Ablageort? Wenn Du "eine Webseite geschalten" hast, dann ist das vermutlich kein großes Paket, wo Du Zugang zum ganzen Server hast. Aber Ionos sollte Dir - irgendwo - verraten, wie der vollständige Pfad zu deinem Web lautet. Sowas wie /usr/katja/wwwroot, oder /customers/1/2/3/example.com/httpd.www.

    Letzteres ist auf meinem Web bei one.com der Fall. Da ist es so, dass der Pfad meine Webadresse enthält, und darunter der Ordner für die Webs liegt.

    /customers
      /1
        /2
          /3
            /example.one
              /httpd.private
              /httpd.www
              /tmp
    

    Ein Browser, der auf example.one zugreift, landet in httpd.www. Ich habe aber noch zwei weitere Ordner, die ein Browser nicht erreichen kann, weil sie außerhalb des Webs liegen. Eine .htpasswd würde nach httpd.private gehören. Wenn sie sich auf einen Ordner namens Neue_Aenderungen_23.11.2020 in deinem Web bezieht, dann würde ich sie auch so nennen: Neue_Aenderungen_23.11.2020.htpasswd.

    In der .htaccess schreibt man dann

    AuthUserFile /customers/1/2/3/example.one/httpd.private/Neue_Aenderungen_23.11.2020.htpasswd
    

    Guck mal, ob Du das auf deine Lage bei Ionos übertragen kannst. Wenn Du keinen Privat-Ordner neben dem Web hast, ok, dann muss die .htpasswd ins Web hinein, aber empfohlen wird das nicht. Leg sie dann in einen eigenen Ordner, und sorge verhindere mit anderen .htaccess Direktiven dafür, dass ein Browser auf diesen Ordner irgendwie zugreifen kann.

    Wichtig ist jedenfalls: Du musst einen absoluten und vollständigen Pfad zur .htpasswd angeben. Wenn Du einen relativen Pfad angibst, wird der - laut Handbuch - relativ zu ServerRoot aufgelöst, also dem Installationsordner des Apache. Und da kommst Du auf einem Miet-Web überhaupt nicht dran.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hi,

      Guck mal, ob Du das auf deine Lage bei Ionos übertragen kannst. Wenn Du keinen Privat-Ordner neben dem Web hast, ok, dann muss die .htpasswd ins Web hinein, aber empfohlen wird das nicht. Leg sie dann in einen eigenen Ordner, und sorge mit anderen .htaccess Direktiven dafür, dass ein Browser auf diesen Ordner irgendwie zugreifen kann.

      nein, die .htpasswd sollte keinesfalls für einen Browser zugreifbar sein!

      Sonst kann man sich den Paßwortschutz auch gleich schenken.

      Der Browser braucht die .htpasswd nicht, der Server prüft die Zugangsberechtigung!

      cu,
      Andreas a/k/a MudGuard

      1. Hallo MudGuard,

        tja, ich werde wohl wirklich langsam senil. Ich will was schreiben, lese es später und da steht dann was ganz anderes, als ich gedacht habe. Natürlich muss man nicht für den Browserzugriff sorgen, sondern ihn verhindern. Ich habe das editiert.

        Also nochmal: Ja, die .htpasswd gehört nicht ins Web. Sie gehört außerhalb davon. Das habe ich beschrieben, am Beispiel meines eigenen Webspace bei one.com, wo es den httpd.private Ordner gibt.

        Es gibt aber mutmaßlich Webangebote, wo das nicht geht. Weil der einzige zugängliche Platz auf dem Server innerhalb des Webs liegt. In dem Fall, und nur in diesem Fall, muss man sich mit der zweitbesten Lösung behelfen. Es gibt Apache Direktiven, die das Lesen von Dateien verhindern. Zum Beispiel:

        <Files ~ "\.htpasswd$">
            Order allow,deny
            Deny from all
        </Files>
        

        Das ist nicht ideal, und ich bin, wie gesagt, nicht der Experte. Kann man ein solches Deny austricksen?

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo,

          Es gibt aber mutmaßlich Webangebote, wo das nicht geht. Weil der einzige zugängliche Platz auf dem Server innerhalb des Webs liegt.

          zumindest gab es die mal - vor einigen Jahren war das bei den Billigheimern noch die Regel. Ob die Zeiten inzwischen besser geworden sind ... keine Ahnung.

          In dem Fall, und nur in diesem Fall, muss man sich mit der zweitbesten Lösung behelfen. Es gibt Apache Direktiven, die das Lesen von Dateien verhindern. Zum Beispiel:

          <Files ~ "\.htpasswd$">
              Order allow,deny
              Deny from all
          </Files>
          

          In der Defaultkonfiguration des Indianers wird mit genau dieser Direktive schon der Zugriff auf alles unterbunden, was mit ".ht" beginnt.

          Das ist nicht ideal, und ich bin, wie gesagt, nicht der Experte. Kann man ein solches Deny austricksen?

          Mit einem PHP-Script, das gefährliche Mängel hat ...
          Allein über HTTP jedenfalls nicht.

          Live long and pros healthy,
           Martin

          --
          Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen.
          1. Hallo Martin,

            In der Defaultkonfiguration des Indianers wird mit genau dieser Direktive schon der Zugriff auf alles unterbunden, was mit ".ht" beginnt.

            Ja ok. Davon war ich eigentlich auch ausgegangen. Und dann hab ich mir ein schönes Schmalztöpfchen gesucht und meinen Fuß reingesteckt. Erreichte Tiefe: 7.3 Kohl (entspricht ca 2.7 Philip)...

            Rolf

            --
            sumpsi - posui - obstruxi
        2. Tach!

          Es gibt Apache Direktiven, die das Lesen von Dateien verhindern. Zum Beispiel:

          <Files ~ "\.htpasswd$">
              Order allow,deny
              Deny from all
          </Files>
          

          Das ist nicht ideal, und ich bin, wie gesagt, nicht der Experte.

          In der Default-Konfiguration des Apachen ist bereits seit langer Zeit ein ebensolcher Ausschluss für .ht* definiert.

          Abgesehen davon könnte man mal bei Ionos schauen, ob die nicht bereits für die Standardaufgabe Paswortschutz etwas in ihre Konfigurationsoberfläche eingebaut haben. Damit sollten die kritischen Dateien auch außerhalb des Documentroot angelegt werden.

          Außerdem gibt es auch im Hilfecenter was zu finden, wie die Pfade aussehen müssen, wenn man einen Verzeichnisschutz mittels .htaccess und SSH einrichtet.

          Kann man ein solches Deny austricksen?

          Wenn das seitens eines Browsers gehen sollte, solltest du bei Apache einen Bugreport öffnen.

          dedlfix.