Tobi: Passwortschutz über .htaccess

Hi,
gehört dies hierher?
Falls nicht, Bitte um Nachsicht.

Wenn man über .htaccess eine Seite schützt und der Anwender sich korrekt anmeldet, hat er dann anschließend die Möglichkeit sich auch wieder abzumelden, damit die Anmeldedaten nicht irgendwo herumhängen?
Ein schöneres Fussballspiel als bisher wünscht
Tobi

  1. Hallo,

    Wenn man über .htaccess eine Seite schützt und der Anwender sich korrekt anmeldet, hat er dann anschließend die Möglichkeit sich auch wieder abzumelden, damit die Anmeldedaten nicht irgendwo herumhängen?

    du hast mit HTACCESS verschiedene Möglichkeiten der Authentifizierung.
    Eine davon sind Cookies und ja, die kann man wieder löschen.

    Grüße, Matze

    1. Hallo,
      da viele Anwender keine Cookies akzeptieren, mache ich es mit der

      .htaccess:
      AuthUserFile /home/foo-de/htdocs/geheim/.htpasswd
      AuthType Basic
      AuthName "blabla"
      require valid-user

      .htpasswd:
      .....

      Und da gibt es wohl keine Abmeldemöglichkeit?

      Grüße
      Tobi

      1. Hi,

        Und da gibt es wohl keine Abmeldemöglichkeit?

        Doch: Schliessen der Browserinstanz.

        (Manche Scripte versuchen, einen "Logout" ueber erneutes senden eines 401-Headers zu realisieren, aber davon wuerde ich abraten.)

        MfG ChrisB

        1. Hallo,

          Doch: Schliessen der Browserinstanz.

          damit alleine ist es nicht zwingend getan. Ein Beispiel hierfür ist der Firefox, dem das Schließen einer _Instanz_ nicht reicht. Es müßten alle Firefoxprozesse beendet werden.

          (Manche Scripte versuchen, einen "Logout" ueber erneutes senden eines 401-Headers zu realisieren, aber davon wuerde ich abraten.)

          Zum Beispiel folgendes keine Script macht dies:

            
          <?php  
          if(!array_key_exists('PHP_AUTH_USER',$_SERVER) || $_SERVER['QUERY_STRING']=='logout'){  
           header('WWW-Authenticate: Basic realm="My Realm"');  
           header($_SERVER['SERVER_PROTOCOL'].' 401 Unauthorized');  
           echo "Ausgeloggt\n";  
           exit;  
          }  
          # Überprüfungsroutine für Users und Passwd aus $_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW']  
          ?>
          ~~~~~~html
            
          <?xml version="1.0" encoding="ISO-8859-1" ?>  
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
          <html xmlns="http://www.w3.org/1999/xhtml">  
          <head>  
          <title>Text</title>  
          </head>  
          <body>  
          <p><a href="?logout">Ausloggen</a></p>  
          </body>  
          </html>
          

          Es arbeitet soweit auch, wenn alles über dieses eine Script gesteuert wird. Möglichkeiten der Realisierung hierfür sind das Verarbeiten gängniger Parametern (Query-Strings, Path-Info, etc.). Somit kann ein Ausloggen über die HTTP-Authentifizierung, wie sie in einer Serverkonfiguration (z. B. .htaccess für den Apachen) bestimmt werden kann, nur für sich allein nicht realisiert werden.

          Des weiteren ist anzumerken, daß obiges Script nur für den Apachen geschrieben ist, unter dem PHP als Server-Modul läuft.

          Gruß aus Berlin!
          eddi

    2. Hallo Matze,

      du hast mit HTACCESS verschiedene Möglichkeiten der Authentifizierung.
      Eine davon sind Cookies und ja, die kann man wieder löschen.

      das wäre mir völlig neu, wenn dies mittel Cookies für den Apachen (und seinen Standard-Modulen) möglich sein sollte.

      Gruß aus Berlin!
      eddi

      1. Hi,

        du hast mit HTACCESS verschiedene Möglichkeiten der Authentifizierung.
        Eine davon sind Cookies und ja, die kann man wieder löschen.

        das wäre mir völlig neu, wenn dies mittel Cookies für den Apachen (und seinen Standard-Modulen) möglich sein sollte.

        mod_auth_cookie existiert, aber als Standard kann man es wohl nicht bezeichnen.

        MfG ChrisB

  2. Hi,

    dann ist das über .htaccess doch nicht so gut!
    Wie machen es denn die Anbieter von mail-Adressen (gmx.yahoo etc.?)
    Gibt es dazu Beispielprogramme in PHP oder Perl?

    Tobi

    1. Hallo Tobi,

      dann ist das über .htaccess doch nicht so gut!

      das ist ein Trugschluß.

      Wie machen es denn die Anbieter von mail-Adressen (gmx.yahoo etc.?)

      Es wird eine Sitzung beim Einloggen generiert, die durch Zeitüberschreitung oder Ausloggen aufgehoben wird. Nicht selten wird sowas auch über Cookies realisiert. Sie werden nämlich gar nicht sooooooo oft von bööööööösen Usern abgewiesen.

      Gibt es dazu Beispielprogramme in PHP oder Perl?

      Perl: http://sourceforge.net/projects/userlogin/
      Php:  http://aktuell.de.selfhtml.org/artikel/php/loginsystem/

      Gruß aus Berlin!
      eddi

  3. Hallo!

    Wenn man über .htaccess eine Seite schützt und der Anwender sich korrekt anmeldet, hat er dann anschließend die Möglichkeit sich auch wieder abzumelden, damit die Anmeldedaten nicht irgendwo herumhängen?

    Wie ich gelesen habe verwendest du HTTP Basic Authentication. Da gibts eigentlich kein einloggen und daher auch kein ausloggen.
    Benutzername und Passwort müssen bei jedem HTTP Aufruf durch den Client explizit mitgesendet werden, ansonsten verweigert dir der Webserver das Ausliefern der Seite.

    Alle mir bekannten Webbrowser sind so nett und merken sich nach der ersten Eingabe deinen Benutzernamen und das Passwort und senden es bei jedem weiteren Aufruf automatisch mit und fragen dich nicht mehr danach.

    Wenn jetzt dein Browser die URL http://example.com/secure aufruft und diese per HTTP Basic Auth. geschützt ist, dann sendet der Server einen Status Code 401 zurück und dein Browser weiß, dass er jetzt das Fenster für Benutzername und Passwort anzeigen muss. Du gibts das ein, dein Broser codiert das mit BASE64 und ruft die gewünschte URL mit einer zusätzlich Headerzeile mit
    Authorization: Basic ssdfsffsf245
    auf. Der Webserver sieht jetzt diese Headerzeile, decodiert Benutzername/Pwd und liefert dir die Seite aus oder verweigert wieder mit Status 401, wenn Benutzername/Pwd nicht stimmen.

    Für jeden weiteren Aufruf merkt sich der Browser, dass der Server hier eine Authentifizierung möchte und sendet diese zusätzliche Headerzeile mit.

    Wie lange er sich das merkt, hängt wohl von der Implementierung im Browser ab.

    mfg
      frafu