Andreas Korthaus: PHP, MYSQL und htaccess

Beitrag lesen

Hallo!

Also wenn ich das jetzt alles richtig verstanden habe, möchtest Du gerne Sachen vereinbaren, die nicht vereinbar sind!

Ich denke, dass das verinbar ist.

Ich hatte das so verstanden er woll nicht das die Besucher bei jedem neuen _Besuch_ Ihre Daten neu eingeben müssen, nicht auf jeder Seite ;-)

Mit der PHP-Authentifizierung erreichst Du _keinen_ Schutz äquivalent zu .htaccess. .htaccess schützt automatisch alles, nicht nur die PHP-Scripte. Per Basic-Authentification(also .htaccess) kommst Du nicht drum herum dass sich das Auth-Fenster jedesmal öffnet und Du nach dem Passwort gefragt wirst, wobei man das im Browser speichern kann und so nicht immer neu eingeben muß, ist eine Frage der Sicherheit.

Wenn ich einmal einen "401-Dialog" ausgefüllt habe, bleiben die Authdaten für das Fenster und alle seine Kinder solange im Browser gespeichert, bis es geschlossen wird.

klar! .htaccess und die PHP-Metzhode haben aber einen wichtigen Unterschied: die PHP-Methode funktioniert ja nur in jemdem PHP Script, in dem Du die PHP-Umgebungsvariablen "manuell" prüfst. ALLES andere ist nicht geschützt, so alle .html, .pdf, .jpg, ... Bei .htaccess werden _alle_ HTTP-Anfragen geschützt werden! Es kommt halt drauf an was man braucht. Der Vorteil der HTTP Auth-Methode in PHP ist im Gegensatz zu anderen Lösungen mit PHP insofern gut, da man hier weder Cookies noch Sessions braucht. Aber das ist auch der einzige Vorteil.

Wenn ich mich also gleich im ersten Fenster autentifiziere, gelten die Authdaten solange, bis wieder ein 401 geschickt wird. Der wird aber von .htaccess nur dann geschickt, wenn die Authdaten ungültig sind oder das Fenster eben keine hat.

Da die Authdaten $HTTP_SERVER_VARS["PHP_AUTH_USER"] und $HTTP_SERVER_VARS["PHP_AUTH_PW"] dann in jedem Script, dass vom gelichen oder untergeordneten Fenstern des Browsers aufgerufen wird, zur Verfügung stehen, kann man die auch für die Datenbankanmeldung mittels wwwrun (PHP) und dem Befehl
$conn = mysql_connect($hostname,$HTTP_SERVER_VARS["PHP_AUTH_USER"],$HTTP_SERVER_VARS["PHP_AUTH_PW"]); an MySQL benutzen. Hier findet ja keine persistente Anmeldung statt, sondern jedes Script muss erneut einen Connect herstellen.

Klar! Daher ist .htaccess auch besser, da diese hier wegfällt, bzw. erheblich performanter vom Apachen erledigt wird.

Viele Grüße
Andreas