Hi zusammen,
ich verzweifel bald - und das PHP nun wirklich nicht mein Fachgebiet ist, benötige ich nun glaube ich wirklich Hilfe
Ausgangslage: ich habe eine API und diese wird durch ein kleines Addon abgesichert. Die Absicherung geht so:
- Benutzername und Passwort werden per POST übertragen
- Es wird ein Token generiert
- Wenn Username und Passwort gültig sind und ein korrekt Cookie-Session existiert, wird das Token für gültig erklärt
- Zugriff OK
(zumindest hab ich das so verstanden ).
Die Abfrage für Benutzername und Passwort ist in der Auth-API einfach nur als Hardcoded drin:
Das ist natürlich quatsch, also mach ich eine eigene Datenbankabfrage, um den Passwort-Hash eines Users abzurufen.
Dazu habe ich in der sowieso mit
geladenen auth.php (da drin ist die Auth-API) eine Funktion eingebaut, welche die an die Auth.php geschickten POST-Daten abfängt und durch die DB laufen lässt.
Was zurück kommt speichere ich dann ab:
Soweit so gut: wenn ich an dieser Stelle nun die Variable $password_hash ausgebe, erhalte ich den korrekten Wert, der in der DB steht.
Nun müsste ich das doch nur noch ganz einfach in der Hardcoded-Zeile korrigieren:
Der gesamte Code sieht dann so aus:
Nur funktioniert das nicht. Beim Aufruf dort ist $password_hash dann aber leer - somit funktioniert das auch nicht.
Was mach ich falsch? Und wie krieg ich das hin?
Quelldaten kann ich falls nötig zur Verfügung stellen.
Danke im Voraus und Gruss,
KlyX
ich verzweifel bald - und das PHP nun wirklich nicht mein Fachgebiet ist, benötige ich nun glaube ich wirklich Hilfe
Ausgangslage: ich habe eine API und diese wird durch ein kleines Addon abgesichert. Die Absicherung geht so:
- Benutzername und Passwort werden per POST übertragen
- Es wird ein Token generiert
- Wenn Username und Passwort gültig sind und ein korrekt Cookie-Session existiert, wird das Token für gültig erklärt
- Zugriff OK
(zumindest hab ich das so verstanden ).
Die Abfrage für Benutzername und Passwort ist in der Auth-API einfach nur als Hardcoded drin:
PHP-Code:
$auth = new PHP_API_AUTH(array(
'authenticator'=>function($user,$pass){ if ($user=='admin' && $pass=='admin') $_SESSION['user']=$user; }
));
Dazu habe ich in der sowieso mit
PHP-Code:
require 'auth.php';
Was zurück kommt speichere ich dann ab:
PHP-Code:
$password_hash = passworthash();
Nun müsste ich das doch nur noch ganz einfach in der Hardcoded-Zeile korrigieren:
PHP-Code:
$auth = new PHP_API_AUTH(array(
'authenticator'=>function($user,$pass){ if ($user=='admin' && $pass=$password_hash) $_SESSION['user']=$user; }
));
Der gesamte Code sieht dann so aus:
PHP-Code:
require 'auth.php';
$password_hash = passworthash();
$auth = new PHP_API_AUTH(array(
'authenticator'=>function($user,$pass){ if ($user=='admin' && $pass=$password_hash) $_SESSION['user']=$user; }
));
if ($auth->executeCommand()) exit(0);
if (empty($_SESSION['user']) || !$auth->hasValidCsrfToken()) {
header('HTTP/1.0 401 Unauthorized');
exit(0);
}
Was mach ich falsch? Und wie krieg ich das hin?
Quelldaten kann ich falls nötig zur Verfügung stellen.
Danke im Voraus und Gruss,
KlyX
Kommentar