Hi,
Es geht darum einen bestimmten Bereich einer Website abzusichern.
Ich hab bereits eine Webanwendung mit PHP und einer MySQL-Datenbank, in der es auch eine Benutzerverwaltung gibt.
Das Ganze funktioniert klassisch - für jeden Benutzer wird ein Benutzername und ein Passwort (Hash) abgelegt, beim Login werden die Daten abgefragt, falls erfolgreich, startet die Session. Soweit cool.
Jetzt ist es ja trotzdem so, dass auch wenn ich nicht eingeloggt bin, aber den absoluten Pfad (URL) zum Beispiel zu einem Bild kenne, ich dieses aufrufen kann. Logisch, in einem Bild kann ich keine Prüfung hinterlegen um sicherzustellen, dass der Benutzer authentifiziert ist.
Jetzt könnte man das mit RewriteRules in der htaccess festlegen, und quasi einfach immer auf eine PHP-Datei verlinken, die dann den Zugriff handelt.
Bevor ich es so mache, würde ich aber gern wissen, ob es möglich ist, einen anderen Ansatz zu verfolgen. Optimal wäre, den Zugriff über HTTP-Authentifizierung zu erhalten. Alle Benutzer mit Passwörtern wären allerdings dann in einer .htpasswd oder ähnlichem - und ich möchte diese Datei weder manuell beschreiben, noch möchte ich, dass der Benutzer den Login über diesen hässlichen Dialog vollziehen muss.
Das geilste wäre, wenn ich die Daten für die HTTP-Authentifizierung irgendwie anstatt aus der htpasswd besser aus der Datenbank lesen könnte, bzw. Benutzername und Passwort manuell zu setzen, ohne es über den automatisch aufpoppenden Dialog machen zu müssen.
Ich hab schon äußerst viele Ansätze verfolgt. Unter anderem, in der htaccess das HTTP_COOKIE zu prüfen. Aber das is alles Mumpitz.
Die Frage ist, kann das so wie ich es mir vorstelle überhaupt funktionieren? Ich hab bereits allerlei versucht, leider ohne Erfolg.
Edit: Ich hab übrigens auch schon umgedacht - meine Idee: Wenn der Benutzer seine Daten über mein hübsches Login-Formular abgesendet hat, dann wird im Hintergrund die HTTP-Authentifizierung vorgenommen. Das heißt es liegt in der htpasswd nur EIN Benutzer mit einem Passwort - wenn der User sich authentifiziert (abgleich mit dem Datensatz in der DB) dann soll die HTTP-Authentifizierung vorgenommen werden mit diesem einen Benutzer aus der htpasswd. Aber das ließ sich bisher auch in keiner Weise umsetzen..
Link
Es geht darum einen bestimmten Bereich einer Website abzusichern.
Ich hab bereits eine Webanwendung mit PHP und einer MySQL-Datenbank, in der es auch eine Benutzerverwaltung gibt.
Das Ganze funktioniert klassisch - für jeden Benutzer wird ein Benutzername und ein Passwort (Hash) abgelegt, beim Login werden die Daten abgefragt, falls erfolgreich, startet die Session. Soweit cool.
Jetzt ist es ja trotzdem so, dass auch wenn ich nicht eingeloggt bin, aber den absoluten Pfad (URL) zum Beispiel zu einem Bild kenne, ich dieses aufrufen kann. Logisch, in einem Bild kann ich keine Prüfung hinterlegen um sicherzustellen, dass der Benutzer authentifiziert ist.
Jetzt könnte man das mit RewriteRules in der htaccess festlegen, und quasi einfach immer auf eine PHP-Datei verlinken, die dann den Zugriff handelt.
Bevor ich es so mache, würde ich aber gern wissen, ob es möglich ist, einen anderen Ansatz zu verfolgen. Optimal wäre, den Zugriff über HTTP-Authentifizierung zu erhalten. Alle Benutzer mit Passwörtern wären allerdings dann in einer .htpasswd oder ähnlichem - und ich möchte diese Datei weder manuell beschreiben, noch möchte ich, dass der Benutzer den Login über diesen hässlichen Dialog vollziehen muss.
Das geilste wäre, wenn ich die Daten für die HTTP-Authentifizierung irgendwie anstatt aus der htpasswd besser aus der Datenbank lesen könnte, bzw. Benutzername und Passwort manuell zu setzen, ohne es über den automatisch aufpoppenden Dialog machen zu müssen.
Ich hab schon äußerst viele Ansätze verfolgt. Unter anderem, in der htaccess das HTTP_COOKIE zu prüfen. Aber das is alles Mumpitz.
Die Frage ist, kann das so wie ich es mir vorstelle überhaupt funktionieren? Ich hab bereits allerlei versucht, leider ohne Erfolg.
Edit: Ich hab übrigens auch schon umgedacht - meine Idee: Wenn der Benutzer seine Daten über mein hübsches Login-Formular abgesendet hat, dann wird im Hintergrund die HTTP-Authentifizierung vorgenommen. Das heißt es liegt in der htpasswd nur EIN Benutzer mit einem Passwort - wenn der User sich authentifiziert (abgleich mit dem Datensatz in der DB) dann soll die HTTP-Authentifizierung vorgenommen werden mit diesem einen Benutzer aus der htpasswd. Aber das ließ sich bisher auch in keiner Weise umsetzen..
Link
Hello World