Login zu htaccess via HTML-Form

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

  • Login zu htaccess via HTML-Form

    Hi

    Ich mache gerade eine Webapp, zu welcher sich aber anmelden muss.
    Das einfachste und sicherste wäre, den Login via .htaccess zu erledigen.
    Allerdings finde ich dieses "Anmeldepopup" ziemlich unattraktiv.

    Kann ich ein Formular machen das schön gestaltet ist (vgl. zB iCloud.com) und die Credentials dann dem Server übergibt und dieser (evt. mit PHP) die Authentifizierung erledigt?

  • #2
    Zitat von fabio Beitrag anzeigen
    Kann ich ein Formular machen das schön gestaltet ist (vgl. zB iCloud.com) und die Credentials dann dem Server übergibt und dieser (evt. mit PHP) die Authentifizierung erledigt?
    Ja

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Gut also dass es irgendwie geht dachte ich mir.
      Ich habe es mal etwa so gelöst:
      PHP-Code:
      <?PHP
      header
      ("LOCATION: http://max:maxpws@www.domain.com/web/login.php");
      ?>
      Die Frage ist für mich, wie sicher das ist.
      Ist es gleich unsicher wie http:// Logins allgemein (Wireshark etc) oder ist es unsicherer als sonst?

      Kommentar


      • #4
        Passwörter in der URL durchschleifen? Untersteh dich.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Naja, Passwörter werden so oder so zu oft im Klartext übertragen.
          Eine ARN-Spoofer via Broadcast verschicken im Netzwerk und man kann sehr viele Passwörter im Klartext bekommen.
          Das von PHP-Resource übrigens auch.

          Aber wie kann ich das nun lösen?
          Ich finde im Internet immer nur umgekehrte Ansätze, wie man via PHP eine HTTP Authentifizierung auslösen kann, also über header() dieses unschöne Fensterchen aufrufen kann.

          Kommentar


          • #6
            Hallo,

            ich glaube, Kropff meinte, dass du bei einer Umleitung per Location-Header dafür sorgst, dass der Browser sich direkt bei der entsprechenden Seite anmeldet und ggf. die Anmeldedaten in der Adressleiste zu sehen sein könnten. Kannst du dich nicht mit PHP bei dem Server anmelden und gewissermaßen als Proxy agieren?

            Gruß,

            Amica
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von fabio Beitrag anzeigen
              Naja, Passwörter werden so oder so zu oft im Klartext übertragen.
              Eine ARN-Spoofer via Broadcast verschicken im Netzwerk und man kann sehr viele Passwörter im Klartext bekommen.
              Das von PHP-Resource übrigens auch.
              Darum gehts auch gar nicht. Schlimmer ist die Tatsache, dass jemand der dem Benutzer auf den Bildschirm schaut die Zugangsdaten einfach mitlesen kann. Ohne Zugriff aus das Netzwerk. Und Jede eingebettete Resource. Und jeder Tracking Dienst. Alle. Und ganz abgesehen davon, und das finde ich viel schlimmer (weil den Hack nutze ich hier und da auch mal, wenn es nicht anders geht): Die allermeisten Browser mögen das gar nicht, geben eine Betrugswarnung aus oder naggen den Benutzer mit anderen nervigen Abfragen. Lass es lieber.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Um zurück zur Frage zu kommen:
                Kann ich per PHP nun einen Header aussenden, welcher den Browser authentisiert für einen Bereich?
                Und wenn ja, welchen Header muss ich nun konkret nutzen.

                So wie ich das auf Stackoverflow gelesen habe geht das nicht, aber Kropff hat da auf die erste Frage mit einem eindeutigen "Ja" geantwortet.

                Kommentar


                • #9
                  Hi

                  Nachdem ich wohl nicht via einem schönen HTML/CSS Formular mich bei einem htaccess anmelden kann, muss ich mich weiter umschauen.

                  Der Login sollte folgende Funktionen bieten:
                  - via HTML/CSS Formular anmeldbar
                  - keinen Zugriff (auch auf JPG/PNG/...) innerhalb des geschützten Verzeichnis zulassen
                  - Bilder danach direkt auslesbar und nicht durch ein PHP Script durchgeschleift


                  Ich habe ein Verzeichnis mit ~2000 Fotos welche absolut nicht zugänglich sein dürfen ohne Login.
                  Aus Performance Gründen ist es aber auch nicht optimal diese Bilder ausserhalb des httpdocs zu speichern und durch ein PHP Script auszugeben.

                  Ja, aber welcher Client nun autorisiert ist und welcher nicht ist wiederum Sache des Servers, genauer gesagt vom Apache Server in dem Falle vom htpasswd.
                  PHP müsste also nur irgendwie dem Apache mitteilen "Hey, der Client ist okay, autorisier ihn".

                  Von der Autorisierung läuft nix auf dem Client ab, lediglich das Formular welches angezeigt wird.
                  Zuletzt geändert von AmicaNoctis; 14.11.2011, 06:40.

                  Kommentar


                  • #10
                    Zitat von fabio Beitrag anzeigen
                    Kann ich per PHP nun einen Header aussenden, welcher den Browser authentisiert für einen Bereich?
                    Nein, natürlich nicht.

                    PHP läuft auf dem Server. Authentifizieren muss sich aber der anfragende Client, und zwar beim Request. Per PHP gesendete Header sind aber Response.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von fabio
                      Von der Autorisierung läuft nix auf dem Client ab, lediglich das Formular welches angezeigt wird.
                      Der Client muss die Zugangsdaten bei jedem Request erneut mitschicken. (Deshalb ist es auch kein „Login“.)

                      PHP müsste also nur irgendwie dem Apache mitteilen "Hey, der Client ist okay, autorisier ihn".
                      Kann es aber nicht.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Hallo,

                        deine Punkte widersprechen sich. Entweder ist ein Verzeichnis geschützt und die Inhalte müssen durchgeschleift werden oder es ist mindestens teilweise offen. Wenn es teilweise offen ist, kommt nur HTTP-Authentifizierung in Betracht und die widerspricht wieder der Forderung nach einem schönen Login.

                        Das Durchschleifen ist aber kein großes Problem und solange die Dateien auf derselben Maschine liegen auch kein nennenswerter Performanceverlust. Die Dateien müssen auch nicht außerhalb des Document Root liegen, sondern lediglich in einem geschützten Verzeichnis.

                        Warum du aber jetzt gleich einen neuen Thread anfängst, verstehe ich nicht.

                        Edit: Themen gejoint

                        Gruß,

                        Amica
                        Zuletzt geändert von AmicaNoctis; 14.11.2011, 06:41.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          Wenn du HTTP Auth mit „schönem Login“ willst, bleibt dir eigentlich nur eine Möglichkeit: AJAX.

                          Du lässt den Nutzer die Zugangsdaten in ein Formular eingeben und erst mal so an den Server schicken, an ein (PHP-)Script außerhalb des geschützten Bereiches. Dieses Script muss dann prüfen, ob die Zugangsdaten stimmen – entweder, in dem es selbst einen HTTP-Request auf eine Ressource innerhalb des geschützten Bereiches macht, oder in dem es die entsprechenden Konfigurationsdateien selber liest und auswertet.
                          Dann gibt das Script eine entsprechende Antwort an den Client, je nachdem ob die Zugangsdaten gültig sind oder nicht. Wenn sie gültig sind, macht der Client einen AJAX-Request nach einer Ressource aus dem geschützten Bereich, und gibt dabei die Zugangsdaten mit.

                          Ich habe das vor ca. einem halben Jahr mal durchgespielt, und alle großen Browser bis auf Opera haben brav mitgespielt. (Opera unterscheidet offenbar zwischen AJAX- und „normalen“ Requests in der Hinsicht – das Fenster für die Eingabe der Zugangsdaten kam anschließend beim Aufruf einer geschützten Ressource per Link immer noch, obwohl der AJAX-Request erfolgreich war. Habe damals kurz überlegt, ob ich einen Bugreport verfassen soll, aber es dann doch bleiben gelassen.)

                          Als Workaround für Opera und Fallback für nicht JS-/AJAX-fähige Browser müsstest du dann mit dem „normalen“ Abfragefenster leben.


                          Wenn du das nicht als eine akzeptable Lösung ansiehst – dann bleibt dir ggf. noch, den Server-Administrator zu bitten, dir ein Modul wie mod_auth_cookie o.ä. zu installieren. (Die Chancen dafür stehen in einer shared hosting-Umgebund aber vermutlich eher schlecht.)
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Danke @wahsaga

                            Das hilft mir schon sehr viel weiter.
                            Die Abfrage via PHP ob das Passwort im .htpasswd enthalten ist kann ich machen.


                            Mit dem Satz: "Wenn sie gültig sind, macht der Client einen AJAX-Request nach einer Ressource aus dem geschützten Bereich, und gibt dabei die Zugangsdaten mit."

                            Meinst du damit dass er danach den Login mit dem https://nameass@domain.ch Schema per AJAX durchschicken?

                            Kommentar


                            • #15
                              Zitat von fabio Beitrag anzeigen
                              Mit dem Satz: "Wenn sie gültig sind, macht der Client einen AJAX-Request nach einer Ressource aus dem geschützten Bereich, und gibt dabei die Zugangsdaten mit."

                              Meinst du damit dass er danach den Login mit dem https://nameass@domain.ch Schema per AJAX durchschicken?
                              Nein.
                              Benutzername und Passwort lassen sich bei AJAX-Requests als extra Parameter der Methode XMLHttpRequest.open mitgeben.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X