Sicherstes Loginverfahren

Original geschrieben von e.motion
Wie kann ich dann bei der WWW-Authentifizierung auf die Variablen für User und Pw zugreifen?
Ist $_SERVER["REMOTE_USER"] == $_SERVER["PHP_AUTH_USER"] ?
Wenn ja wie kann ich dann auf das eingegeben Pw zugreifen?

Sry hab davon noch net so viel Ahnung.

MfG e.motion

Naja, für den User musst du halt einen Query senden, der Checkt, ob $_SERVER["REMOTE_USER"] in der Datenbank vorhanden ist. Eigentlich könntest du im selben Query checken, ob das Passwort auch passt, aber wenn es die Variable $_SERVER["PHP_AUTH_PW"] nicht mehr gibt geht das nicht... :rolleyes:
Aber irgendwie kann das doch garnicht sein, wenn man diese Variable nicht mehr zur Verfügung stehe hat, kann man damit doch garkein Login mehr realisieren?
 
Jo des hab ich mir ja auch gedacht. Wenn es nur noch eine Variable für den User und keine mehr für das Passwort gibt ist der Login ja sinnlos.

Aber das muss es ja eine Lösung geben. Die WWW-Authentifizierung wird ja wohl kuam abgeschafft sein.
 
die $_SERVER["PHP_AUTH*"]; variablen gibts noch. Local sind sie unter PHP 4.3.3 immer noch vorhanden (auf meinem Heimrechner = win/linux), Online (linux) nicht mehr, liegt also an der konfiguration der .ini.

aber einfach mal=> print_r($_SERVER); machen und schauen was alles so auf den bildschirm gepackt wird. ;)
 
Ok hab ich gmeacht. Da das Passwort nur bei PHP_AUTH_PW zu sehen war gehe ich mal davon aus das die WWW-Authetifizierung mit PHP nicht ohne die Variablen PHP_AUTH_USER und PHP_AUTH_PW geht. UNd da es diese Variablen nicht mehr gibt muss ich ein anderes Loginsystem benutzen. welches würdet ihr mir da empfehlen?
Dann am besten mit Sessions oder?

MfG e.motion
 
Zuletzt bearbeitet:
mod_auth_mysql ist mein fav. unterstuetzt db_encryption() etc. (Ps. muss als Apache module geladen sein)

die .htaccess datei sieht in etwa so aus:

Code:
AuthType Basic
AuthName "SECRET AREA"
AuthMySQLHost localhost
AuthMySQLCryptedPasswords On
AuthMySQLDB db_name
AuthMySQLUser user
AuthMySQLPassword password
AuthMySQLUserTable dbtabelle
AuthMySQLNameField feldname
AuthMySQLPasswordField feldanme
AuthMySQLKeepAlive Off

dann mit $_SERVER["REMOTE_USER"] die daten aus der db ausgeben lassen und mit Session arbeiten ....

ps. wenn encryption auf On gesetzt ist, muss das db_feld varchar(32) sein ansonsten funktioniert das hashen nicht..
 
Zuletzt bearbeitet:
Hallo,

ich habe einen Userlogin über PHP und Mysql realisiert. Dabei würde mich einmal interessieren, ob es da -sicherheitstechnische Bedenken gibt.

Hier einmal eine kurze Darstellung des Verfahrens:
- User gibt seine Daten in eine Anmeldemaske (HTML-Formular) ein.
- Via JavaScript wird das Formular ausgewertet und ein Link generiert, der dann auch automatisch aufgerufen wird. Dieser Link beinhaltet den Usernamen und das Kennwort als Parameter (?username=meier&kennwort=1234).
- Aufgerufen wird mit diesen Parametern eine PHP Datei, die den Eintrag mit den Einträgen in einer Mysql Datenbank vergleicht und bei Übereinstimmung den Login erlaubt.
- Bei einem positiven Login wird ein Eintrag in eine weitere Mysql Tabelle gemacht. Dort wird eine Art Session gestartet mit den Userberechtigungen versehen und dem User zurückgegeben. Für alle weiteren Anfragen genügt die Session ID zur Berechtigungsprüfung
- Bei dreimaligem negativen Login wird der Useraccount über ein Flag in der Mysql Tabelle gesperrt.
- Die Session hat eine bestimmte Gültigkeit und wird nach einem gewissen Timeout gelöscht. D.h. wenn der User eine bestimmte Zeit keine Anfrage mit Session startet, muss er sich erneut anmelden um eine neue Session ID zu bekommen.

So weit so gut,

wo würde ein Hacker seinen Angriff setzen ?:(
 
Ganz einfach, indem er direkte Request an die Check Datei setzt. Also User und Passwortübergabe per ULR ?user=...&pas=.... also per GET ist so ziemlich dsa unsicherste was du machen kannst. Da braucht ja nur wer die URL abzufangen und schon hat er die Daten.
 
Zurück