.htaccess und php

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • .htaccess und php

    Hallo!

    Ist es moeglich .htaccess dateien via php auszulesen und dann praktisch den benutzernamen/login-namen mit auf die naechste bzw. index seite zu nehmen.. wo dann steht "Hallo $user ..." ?

    Danke.

  • #2
    Dafür brauchst Du nicht das File .htaccess auszulesen. Wenn eine Authentifizierung über htaccess erfolgt ist, wird solange der Browser nicht wird über die Variable $PHP_AUTH_USER die UserID zur Verfügung gestellt.

    print "Hallo $PHP_AUTH_USER";

    Kommentar


    • #3
      @hand

      Kannst du das mal ins Deutsch übersetzen:
      wird solange der Browser nicht wird über die Variable $PHP_AUTH_USER die UserID zur Verfügung gestellt
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        Wenn eine Authentifizierung über htaccess erfolgt ist, wird solange der Browser nicht GESCHLOSSEN wird über die Variable $PHP_AUTH_USER die UserID zur Verfügung gestellt.

        (ist passiert)

        Wird Browser geschlossen und htaccess geschütze Directory neu aufgerufen, erfolgt eine erneute Authentifizierungs-Aufforderung.

        Nach erfolgreicher Authentifizierung werden die Authentifizierungs-Informationen, UID und PWD, vom Browser bei jedem Request an den Server mitgesendet und dort gegen die htaccess geprüft. Sobald die Kombination UID/PWD nicht mehr mit htaccess-Inhalten übereinstimmt, beispielsweise bei Wechsel in ein anderes htaccess geschütztes Directory mit einer anderen UID/PWD Kombination wird sofort wieder das Authentifizierungs-Fenster angezeigt, zu einer erneuten Authentifizierung.



        Kommentar


        • #5
          Hab da mal ne andere Frage.

          Ich habe ein Datenbankgestützes Loginscript, kann ich jetzt das Verzeichnis noch zusätzlich mit der .htaccess schützen?

          Habe mehrer Benutzern mit unterschiedlichen Namen und Passwörtern.
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            Danke an alle für die schnelle Hilfe!

            Kommentar


            • #7
              Ja kannst Du. Ob das Sinn macht kann ich Dir nicht sagen, ich kenn ja Deine Applikation nicht und weiß nicht was Du glaubst damit sicherer machen zu wollen. .htaccess liest UID und PWD aus einem plain/text File und ist nicht das Gelbe vom Ei, es dient als Mindestmaßnahmen um Inhalte eines Directories vor unautorisiertem Zugriff zu schützen.

              .htaccess dient eigentlich dazu, die über die httpd.conf definierten globalen Parameter/Einstellungen zu übersteuern. Am Häufigsten wird .htaccess sicher zur Authentifizierung eingesetzt. Es könnten aber auch der Directory-Index oder AddType Parameter übersteuert werden. Alle in der .htaccess angegebenen Werte gelten für das Verzeichnis in dem es sich befindet und alle seine Unterverzeichnisse. Wenn ein Authentifizierungs .htaccess im Directory ...\htdocs\kau liegt sind automatisch seine Unterverzeichnisse wie ...\htdocs\kau\gummi mitgeschützt. Wird direkt ein File in ...\htdocs\kau\gummi aufgerufen wird für dieses die Authentifizierung verlangt.

              Beschreibung für WAMP

              1. Schritt - In httpd.conf setze den AllowOverride auf All oder AuthConfig
              Code:
              # This controls which options the .htaccess files in directories can
              # override. Can also be "All", or any combination of "Options", "FileInfo", 
              # "AuthConfig", and "Limit"
              #
                  AllowOverride AuthConfig
              2. Schritt - Definition des .htaccess-Filenamen.
              Ich habe in diesem Sample den Namen auf ".htzugriff" gesetzt. Per Default lautet er .htaccess. Der "." vor dem Filenamen
              dient dazu das File unter Linux (Unix) im Filesystem auf auf hidden zu setzen. Ich schlage vor aus Gründen der Security einen ganz anderen Namen zu verwenden, denn Cracker, die u.U. in das System eindringen suchen nach .htaccess Files. Ist aber nur ein schwacher Schutz, da man ja auch nach Inhalten suchen kann, aber besser als gar nichts ist es.
              Code:
              #
              # AccessFileName: The name of the file to look for in each directory
              # for access control information.
              #
              AccessFileName .htzugriff
              3. Schritt - Apache durchstarten, damit o.a. http.conf Parameter aktiviert werden


              4. Schritt - Userid/Passwort-Datei anlegen
              Aus Gründen der Sicherheit ist dieses File außerhalb des WebRoot-Verzeichnisses abzulegen, damit dieses nicht über einen Browserzugriff kompromitiert werden kann. Benutzerkennung und Password werden durch ":" getrennt. Passwort kann auch verschlüsselt sein. Ich schlage als Speicherort und Namen c:\null.txt vor.
              Code:
              wotan:accept
              hand:geheim

              5. Schritt - Erstellen des .htaccess-Files zu Authentifizierungsübersteuerung
              Fileinhalt von File: ".htzugriff"
              Code:
              AuthType Basic
              AuthUserFile c:/null.txt
              AuthName "special directory"
              Require valid-user
              Hier wird also Ort und Namen des Passwort-File definiert.

              6. Schritt - .htaccess-File in gewünschtes zu schützendes Directory ablegen, in unserem Fall ".htzugriff"

              7. Schritt - Testen. Ein File aus dem nun geschützen Direcory über Browser aufrufen. Nun müßte der Login-Prompt erscheinen

              In der Zeit in der ich dies jetzt geschrieben habe ist ein .htaccess Schutz schon längst eingerichtet. *g*

              Nun könnte man das Userid/Passwort-File über PHP-Mittel (Filesystemfunktionen) verändern, User hinzufügen, PWD ändern usf. Das wäre was vermutlich für Deine Applikation. Du müßtest dieses File mit vermutlich Deiner User-Datenbank synchron halten. Aber wie gesagt, obs Sinn macht?

              Es ist auf alle Fälle zu empfehlen die Entwicklungs und Testdirectories auf einem Webserver über htaccess zu schützen.

              [Editiert von hand am 13-01-2002 um 10:18]

              Kommentar


              • #8
                Hallo,

                hab noch eine Frage in bezug auf .htaccess.. kann ich $PHP_AUTH_USER auch mit session() nutzen ? wenn ja wie geht dieses? und macht es ueberhaupt sinn?

                Danke

                Kommentar


                • #9
                  Ja natürlich kannst Du $PHP_AUTH_USER und parallel dazu session() nutzen. So eine Frage ob das Sinn machen könnte ist immer schwer zu beantworten. Sage ich macht keinen Sinn, gibt es sicher den Einen oder Anderen der ein Beispiel erwähnt, wo es durchaus Sinn machen würde.

                  Ich würde Sessions verwenden. HTACCESS ist für Webserver da, die kein PHP haben um etwas zu schützen. Früher konnten serverside Skripte nur in CGI-Verzeichnissen exekutiert werden, jetzt gibt es eben bereits so Skriptsprachen wie ASP oder PHP, die sich aus dem htdocs-Verzeichnis aufrufen lassen. Außerdem wird nach Authentifizierung über htaccess/htpasswd bei jedem Request die UID und das PWD über die Leitung geschickt und der Datenstrom kann mitgesnifft werden, soferne die Leitung nicht über SSL verschlüsselt wird. Passwörter und UID sollen, wenn keine SSL Verbindung zur Verfügung steht, tunlichst wenn möglich nur einmal über die Leitung gejagd werden.

                  Aber es kommt sicher auf die Applikation drauf an, ob diese Sicherheitsbedenken angebracht sind, d.h. Risiko eingegangen werden kann.

                  Wenn Du über Session() arbeitest, so muß sich der Benutzer nur einmal über das Netz autentifizieren und ab diesem Zeitpunkt arbeitest Du mit einer belanglosen Session-IDs weiter, wobei die anderen Informationen am Webserver gehalten werden. Ist doch ideal zum handeln der stateless Applikationen.

                  Kommentar


                  • #10
                    Der Vollständigkeit halber eine kleine Ergänzung zu meinem Minitutorial Betreffend der .filenamen wie .htaccess und .htpasswd

                    Nochwas die Beschreibung bezieht sich auf den Apache-Webserver.

                    Ich habe geschrieben "Der "." vor dem Filenamen
                    dient dazu das File unter Linux (Unix) im Filesystem auf auf hidden zu setzen." Das ist aber nicht alles.

                    Es müssen Vorkehrungen getroffen werden, daß Controlfiles wie .htaccess oder .htpasswd nicht über den http Dienst ausgelesen werden können. Nun gut .htpasswd wird außerhalb der Webserver-Root gelegt, also ist kein direkter Zugriff darauf möglich. Was aber bei dem .htacces File, dieses muß ja in das zu schützende Verzeichnis gelegt werden?

                    Im Control-File des Apache, der httpd.conf, wird im folgenden Abschnitt definiert wie der Apache mit .files umzugehen hat:
                    Code:
                    # The following lines prevent .htaccess files from being viewed by
                    # Web clients.  Since .htaccess files often contain authorization
                    # information, access is disallowed for security reasons.  Comment
                    # these lines out if you want Web visitors to see the contents of
                    # .htaccess files.  If you change the AccessFileName directive above,
                    # be sure to make the corresponding changes here.
                    #
                    # Also, folks tend to use names such as .htpasswd for password
                    # files, so this will protect those as well.
                    #
                    <Files ~ "^\.ht">
                        Order allow,deny
                        Deny from all
                        Satisfy All
                    </Files>
                    Das bedeutet also, der direkte Zugriff .ht-files ist von Apache zu unterbinden, also kann nicht direkt darauf über http darauf zugegriffen.

                    Kommentar


                    • #11
                      kann man auch mit ner variablen das pw weitergeben??

                      Kommentar


                      • #12
                        Sicher über eine URI empfaenger.php?passwort=kaugummi oder über ein Hidden-Field in einem Formular, oder die wohl sicherste Methode über eine Sessionvariable, da das PWD nicht übers Netz geschickt wird. Oder wie ist Deine Frage zu verstehen?

                        Kommentar


                        • #13
                          mit $PHP_AUTH_USER kann man den login name aus dem htccss (oder so ähnlich) login "rausfiltern". geht das auch mit dem passwort??

                          Kommentar


                          • #14
                            Die Variable heißt: $PHP_AUTH_PW

                            Kommentar


                            • #15
                              @hand

                              Danke fuer die .ht* hilfe. gibts eigentlich eine referenz wo alle sachen aufgezaehlt werden, die machbar via .htaccess dateien sind? praktisch wenn man(n) kein zugang zu dem httpd.conf file hat *g*

                              Danke.

                              Kommentar

                              Lädt...
                              X