| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

08-11-2011, 10:18
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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?
|

08-11-2011, 10:30
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
Zitat:
Zitat von fabio
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
|

09-11-2011, 16:12
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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?
|

09-11-2011, 16:29
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
Passwörter in der URL durchschleifen? Untersteh dich.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

10-11-2011, 20:12
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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.
|

10-11-2011, 20:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

11-11-2011, 07:54
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Zitat:
Zitat von fabio
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.
|

14-11-2011, 00:13
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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.
|

14-11-2011, 00:14
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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.
Geändert von AmicaNoctis (14-11-2011 um 07:40 Uhr)
|

14-11-2011, 00:16
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
Zitat von fabio
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.
|

14-11-2011, 01:49
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
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“.)
Zitat:
|
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.
|

14-11-2011, 07:36
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (14-11-2011 um 07:41 Uhr)
|

14-11-2011, 12:06
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
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.
|

14-11-2011, 15:57
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
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://name ass@domain.ch Schema per AJAX durchschicken?
|

14-11-2011, 16:46
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.482
|
|
Zitat:
Zitat von fabio
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://name:pass@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.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|