Phil: .htaccess Files keine Passwortabfrage

Hallo zusammen

Ich möchte auf meinem Webserver gerne eine einzelne Datei mittels .htaccess schützen.

.htaccess

  
# .htaccess-Datei für Web-Verzeichnis  
AuthType Basic  
AuthName "Sandbox-Bereich"  
AuthUserFile /var/www/html/.htpasswd  
Order deny,allow  
<Files index.php>  
Require valid-user  
</Files>  

.htpasswd

  
# BenutzerDatei für Web-Projekt  
Benutzer:etwas

Allerdings klappt es mit dem Passwortschutz nicht. Es erfolgt keine Passwortabfrage im Browser, stattdessen wird direkt eine Fehlermeldung ausgegeben.

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Was mache ich falsch? Danke.

  1. Ich möchte auf meinem Webserver gerne eine einzelne Datei mittels .htaccess schützen.

    ...

    Was mache ich falsch? Danke.

    Ich bin wahrlich kein Webserver Guru, insoweit nimm bitte meine Bemerkung mit reichlich Vorsicht, aber .htaccess gilt meines Wissens nach auf Basis eines Verzeichnisses, nicht jedoch nur für ein Datei.

    Vielleicht/Vermutlich lässt sich meine Bemerkung in den .htaccess Docs verifizieren ... oder widerlegen ... letzteres glaube ich nicht wirklich ;-) ... aber bin mir auch nicht sicher.

    1. Hallo,

      Ich bin wahrlich kein Webserver Guru, insoweit nimm bitte meine Bemerkung mit reichlich Vorsicht, aber .htaccess gilt meines Wissens nach auf Basis eines Verzeichnisses, nicht jedoch nur für ein Datei.

      die Konfigurationsdatei gilt fürs ganze Verzeichnis (und alle seine Unterverzeichnisse), das ist schon richtig. Aber man kann bestimmte Direktiven mit einem Files-Container sehr wohl auf einzelne Dateien oder Gruppen von Dateien einschränken.

      So long,
       Martin

      --
      Es gibt Tage, da gelingt einem einfach alles.
      Aber das ist kein Grund zur Sorge; das geht vorbei.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo zusammen

        Vielen herzlichen Dank für Eure Hilfe! Leider haben die Tipps "nichts" gebracht. Ich habe nun die zu schützende Datei in ein separates Verzeichnis kopiert, der .htaccess Schutz für Verzeichnisse funktioniert einwandfrei.

  2. Moin

    .htaccess

    .htaccess-Datei für Web-Verzeichnis

    AuthType Basic
    AuthName "Sandbox-Bereich"
    AuthUserFile /var/www/html/.htpasswd

    Stimmt dieser Pfad? Es muss der DOCUMENT_ROOT sein!!!

    Order deny,allow

    Wozu diese Zeile? Mal rausnehmen!

    <Files index.php>

    index.php sollte in "" gesetzt sein!

    Require valid-user
    </Files>
    [/code]

    .htpasswd

    BenutzerDatei für Web-Projekt
    Benutzer:etwas

      
    Passwort als Plain/text? ich denke hier solltest du mal die htpasswd automatisch erzeugen lassen. Z.B. [hier](https://www.phpbb.de/support/doku/htpasswd.php)  
      
    Probier mal die ganzen Hinweise. Vielleicht liegt es ja an einem der genannten Dinge.  
      
    Ansonsten hilft nur [googlen](http://igtfy.com/?q=einzelne+datei+mit+htaccess+sch%C3%BCtzen). Da findest du einige Ansätze.  
      
    Gruß Bobby  
    
    -- 
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-  
    ### Henry L. Mencken ###  
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-  
    ## Viktor Frankl ###  
      
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    
    1. Hallo,

      AuthUserFile /var/www/html/.htpasswd
      Stimmt dieser Pfad? Es muss der DOCUMENT_ROOT sein!!!

      nein, der Pfad bezieht sich auf das *Dateisystem* des Servers.

      Order deny,allow
      Wozu diese Zeile? Mal rausnehmen!

      Oder um ein Allow From All ergänzen?

      <Files index.php>
      index.php sollte in "" gesetzt sein!

      Stimmt.

      Passwort als Plain/text?

      Sehr ungewöhnlich, aber AFAIK möglich.

      Ciao,
       Martin

      --
      Der Alptraum jedes Computers:
      "Mir war, als hätte ich gerade eine 2 gesehen."
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Moin

        Hallo,

        AuthUserFile /var/www/html/.htpasswd
        Stimmt dieser Pfad? Es muss der DOCUMENT_ROOT sein!!!

        nein, der Pfad bezieht sich auf das *Dateisystem* des Servers.

        Ähm, bezieht sich der DOCUMENT_ROOT nicht auf das Dateiverzeichnis des Servers? Das ist doch in der ini des Servers festgelegt und ist doch immer auf das Dateisystem bezogen. Oder irre ich mich da jetzt?

        Order deny,allow
        Wozu diese Zeile? Mal rausnehmen!

        Oder um ein Allow From All ergänzen?

        Ich hattes mal getestet ohne diese Zeilen. Aber kann er natürlich auch probiern.

        <Files index.php>
        index.php sollte in "" gesetzt sein!

        Stimmt.

        Passwort als Plain/text?

        Sehr ungewöhnlich, aber AFAIK möglich.

        Echt? Ich dachte nicht. Kannst du mir eine Quelle nennen wo ich das nachlesen kann?

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Hallo,

          AuthUserFile /var/www/html/.htpasswd
          Stimmt dieser Pfad? Es muss der DOCUMENT_ROOT sein!!!
          nein, der Pfad bezieht sich auf das *Dateisystem* des Servers.
          Ähm, bezieht sich der DOCUMENT_ROOT nicht auf das Dateiverzeichnis des Servers?

          ich habe den Eindruck, du bringst da gerade einiges durcheinander.

          Das ist doch in der ini des Servers festgelegt und ist doch immer auf das Dateisystem bezogen.

          Was für'n ini? ;-)
          Natürlich ist DocumentRoot eine Angabe im Filesystem des Servers - kann ja auch nicht anders sein, einen anderen Bezugspunkt habe ich an der Stelle ja gar nicht.
          Der Pfad für die User- oder Gruppendatei für HTTP AUTH wird aber ebenfalls absolut im Server-Filesystem angegeben, und nicht relativ zum DocumentRoot. Sonst wäre es ja nicht möglich, diese Dateien außerhalb des für HTTP zugänglichen Bereichs abzulegen, was normalerweise empfohlen wird.

          Passwort als Plain/text?
          Sehr ungewöhnlich, aber AFAIK möglich.
          Echt? Ich dachte nicht. Kannst du mir eine Quelle nennen wo ich das nachlesen kann?

          So aus dem Handgelenk nicht. Ich habe meinen Testserver hier zuhause (lange Jahre einen Apache 2.0) aber die ganze Zeit mit unverschlüsselten Passwörtern betrieben. Inzwischen ist es ein Apache 2.2, und da habe ich die Defaulteinstellung übernommen; irgendeine Verschlüsselung ist da also jetzt im Spiel.

          Ciao,
           Martin

          --
          Abraham sprach zu Bebraham: Kann i mal dei Cebra ham?
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Moin

            Hallo,

            AuthUserFile /var/www/html/.htpasswd
            Stimmt dieser Pfad? Es muss der DOCUMENT_ROOT sein!!!
            nein, der Pfad bezieht sich auf das *Dateisystem* des Servers.
            Ähm, bezieht sich der DOCUMENT_ROOT nicht auf das Dateiverzeichnis des Servers?

            ich habe den Eindruck, du bringst da gerade einiges durcheinander.

            Ok, ich vermisch grad PHP mit Apache. Aber der $_SERVER['DOCUMENT_ROOT'] in PHP entspricht doch dem absoluten Pfad des Webprojektes zum Dateiverzeichnis?

            Das ist doch in der ini des Servers festgelegt und ist doch immer auf das Dateisystem bezogen.

            Was für'n ini? ;-)

            Na DIE Ini vom Apache... :)

            Natürlich ist DocumentRoot eine Angabe im Filesystem des Servers - kann ja auch nicht anders sein, einen anderen Bezugspunkt habe ich an der Stelle ja gar nicht.
            Der Pfad für die User- oder Gruppendatei für HTTP AUTH wird aber ebenfalls absolut im Server-Filesystem angegeben, und nicht relativ zum DocumentRoot. Sonst wäre es ja nicht möglich, diese Dateien außerhalb des für HTTP zugänglichen Bereichs abzulegen, was normalerweise empfohlen wird.

            da hattest du mich nun falsch verstanden. Ich meinte die Pfadangabe muss den DOCUMENT_ROOT enthalten und somit absolut zum Dateiverzeichnis sein. Ich denke jetzt wird ein Schuh draus. :D

            Passwort als Plain/text?
            Sehr ungewöhnlich, aber AFAIK möglich.
            Echt? Ich dachte nicht. Kannst du mir eine Quelle nennen wo ich das nachlesen kann?

            So aus dem Handgelenk nicht. Ich habe meinen Testserver hier zuhause (lange Jahre einen Apache 2.0) aber die ganze Zeit mit unverschlüsselten Passwörtern betrieben. Inzwischen ist es ein Apache 2.2, und da habe ich die Defaulteinstellung übernommen; irgendeine Verschlüsselung ist da also jetzt im Spiel.

            Hm, Also ich denke unverschlüsselte Passwörter sind nur erlaubt wenn diese mit dem entsprechenden Flag angelegt wurden.

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ## Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
            1. Hi,

              Ok, ich vermisch grad PHP mit Apache. Aber der $_SERVER['DOCUMENT_ROOT'] in PHP entspricht doch dem absoluten Pfad des Webprojektes zum Dateiverzeichnis?

              ja, richtig.

              da hattest du mich nun falsch verstanden. Ich meinte die Pfadangabe muss den DOCUMENT_ROOT enthalten und somit absolut zum Dateiverzeichnis sein. Ich denke jetzt wird ein Schuh draus. :D

              Jetzt versteh ich auch, was du gemeint hast. Aber dann war deine erste kritische Rückfrage an Phil IMHO verwirrend, weil seine Angabe eigentlich schon richtig aussah.

              Passwort als Plain/text?
              Ich habe meinen Testserver hier zuhause (lange Jahre einen Apache 2.0) aber die ganze Zeit mit unverschlüsselten Passwörtern betrieben.
              Hm, Also ich denke unverschlüsselte Passwörter sind nur erlaubt wenn diese mit dem entsprechenden Flag angelegt wurden.

              Ja, ich hatte wohl beim Erzeugen der Passwortdatei mit htpasswd einen entsprechenden Switch angegeben (ist aber lange her), weil ich hier für Testzwecke nicht auch noch verschlüsselte Passwörter wollte - das macht die Fehlersuche noch schwieriger, wenn mal wirklich was mit der Authentifizierung nicht läuft. So konnte ich wenigestens die Passwortdatei im Editor öffnen, nachsehen, aha, Passwort passt. ;-)

              Ciao,
               Martin

              --
              Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. hi,

    Allerdings klappt es mit dem Passwortschutz nicht. Es erfolgt keine Passwortabfrage im Browser, stattdessen wird direkt eine Fehlermeldung ausgegeben.

    Das ist ungewöhnlich, vermutlich spielt der Browser-Cache hier mit, mach den mal leer und teste auch mal einen anderen Browser. Zur genauen Analyse schaue Dir die request- und responseHeader an, ob der richtige Status kommt, als Erstes sollte der Server einen 401 senden.

    This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

    Das kommt normalerweise erst nachdem der Browser einen Prompt gesendet hat und im Anschluss entweder die Credentials nicht stimmen oder die Passwortdatei nicht gefunden wird, oder der Server die Encryption nicht versteht. Das kriegst Du sehr schnell raus mit einem Klartext-Passwort (wurde hier schon gepostet).

    Was mache ich falsch? Danke.

    Vielleicht noch ein Hinweis, falls Du auf Windows testest: Die Pfad-Angabe zur Passwortdatei kann ohne Laufwerk erfolgen, sofern der Pfad auf demselben Laufwerk ist, wie die die Programmdateien des Apache.

    Horst Kralle

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.