Perfekte Login-Methode?

RalphK

Grünschnabel
Hallo,
die php-sessions sind prima für die Zugangskontrolle, aber mich stört daran, das man in jeder php-Datei einen Codeblock einfügen muss.

Ich suche eine Login-Lösung, bei der

a) ein komplettes Verzeichnis mit allen Inhalten - so wie es ist - geschützt ist, ohne dass man an einzelnen Dateien etwas ändern muss

b) die Übergabe von Username und Passwort direkt aus dem Formular erfolgt, also ohne dass der lästige Systemdialog erscheint

c) alle gängigen Dateitypen im geschützten Bereich ohne Einschränkung vom Browser angezeigt bzw. ausgeführt werden


Gibt es so etwas überhaupt? Wäre super, wenn jemand eine Idee hätte.

Viele Grüße
Ralph
 
a) ein komplettes Verzeichnis mit allen Inhalten - so wie es ist - geschützt ist, ohne dass man an einzelnen Dateien etwas ändern muss
So ist leider überhaupt nicht klar, was du eigentlich machen willst. Was für einen Schutz willst du realisieren? Da gibt es ja nun wortwörtlich unendlich Möglichkeiten.
b) die Übergabe von Username und Passwort direkt aus dem Formular erfolgt, also ohne dass der lästige Systemdialog erscheint
Ich nehme mal an, du meinst mit "Systemdialog" die Eingabeaufforderung für htaccess-geschützte Verzeichnisse. htaccess hat nichts mit PHP zu tun, sondern mit dem HTTP-Server, das heißt, wenn eine solche Datei in einem Verzeichnis existiert, kann man soviel programmieren wie man lustig ist, man wird trotzdem keinen Zugriff auf irgendwelche Dateien bekommen, solange man nicht in der Aufforderung das Passwort eingegeben hat.
c) alle gängigen Dateitypen im geschützten Bereich ohne Einschränkung vom Browser angezeigt bzw. ausgeführt werden
Ob der Browser alle gängigen Dateitypen anzeigen kann, hängt auch wieder nicht von PHP ab, sondern von der Konfiguration des HTTP-Servers sowie von den Fähigkeiten des Browsers selbst. Mit PHP kann man daran nichts drehen. Ein Workaround wäre, alle Dateizugriffe über ein PHP-Skript zu leiten, das selbst das Senden der korrekten HTTP-Header übernimmt -- damit umgeht man den Server. Trotzdem muss immer noch der Browser mit dem gesendeten Header zurechtkommen.

Wenn du verhindern willst, dass der Server Dateien ausliefert, ohne dass der User sich autorisiert hat, so ist das unmöglich, wenn du keine htaccess-Dateien einsetzt. Der Server sendet ALLES, was der User will, wenn das Verzeichnis nicht auf Server-Ebene geschützt wurde. Wenn das nicht so wäre, könnten auch PHP-Skripte nicht mehr laufen, und nichts wäre mehr möglich.

Wenn du mit PHP ein Verzeichnis schützen willst, ist die einzige Lösung, alle Daten in ein htaccess-geschütztes Verzeichnis und den PHP-Code in ein offenes Verzeichnis zu legen. Nun muss sich der User in den Formularen autorisieren und PHP übernimmt das Senden der Daten aus den geschützten Verzeichnissen. Allerdings muss dafür selbstverständlich der entsprechende Code in den Skripten vorhanden sein -- wie soll es funktionieren, wenn kein Code existiert?

Es gibt noch die Möglichkeit, das Root des Projekts mit htaccess zu sperren. Dann generiert der Server bei jedem Zugriff einen Fehler. Diesen Fehler kann man über die htaccess auf ein PHP-Skript leiten. Dieses Skript kann anschließend die korrekte Bearbeitung der Anfrage übernehmen, gegebenfalls auch andere Skripte aufrufen. So könnte man das Einfügen von Code in alle PHP-Dateien umgehen.

Gawayn
 
Zuletzt bearbeitet:
Hallo Gawayn,
danke für Deine ausführliche Antwort.

Noch ein paar Infos zur Erläuterung:
Ich hatte bisher einen Verzeichnisschutz mit .htaccess/.htpasswd
sowie ein Script, dass Username/Passwort mit einer Datenbank vergleicht.
Ist der User ok, erfolgte der Aufruf des geschützten Verzeichnisses über ein Link, bei dem Username und Passwort übergeben werden
http:/[username]:[passwort]@http://www.domain.de

Diese Methode (User & PW im Link übergeben) wird leider seit Anfang des Jahres durch ein Sicherheitsupdate für den IE geblockt.

Ich suche jetzt händeringend eine Alternative, die das gleiche ermöglicht:
Schutz eines kompletten Verzeichniszweiges mit allen Inhalten - as it is
sowie direktes Login ohne htaccess-Abfragedialog

Vielen Dank jedenfalls für den Hinweis mit der Fehlerumleitung in der htaccess auf ein Script. Ich werde das ausprobieren.

Ralph
 
Zurück