Sicherheit: Passkey-Registrierung nur mit Freigabe durch Superadmin
authServer.php nahm getCreateArgs/processCreate ohne jede Pruefung an und uebernahm die Benutzer-id aus der URL. Jeder konnte damit aus dem Internet einen Passkey fuer ein beliebiges Konto (auch Superadmin) registrieren und sich anschliessend anmelden. - sites/userkeys.php loest den addKey ein und legt eine Freigabe in der Session ab (5 Minuten, ein Benutzer, einmalig); der addKey wird geloescht - authServer.php verlangt fuer getCreateArgs/processCreate Login, Superadmin-Recht und diese Freigabe; die Benutzer-id kommt aus der Freigabe, nicht aus der URL - queryFidoMetaDataService nur fuer Superadmins - Passkey-Login verweigert gesperrte Benutzer und meldet keinen Erfolg mehr, wenn der Benutzer fehlt - addKey.php verlangt wie userkeys.php das Superadmin-Recht - session_regenerate_id() nach Passwort- und Passkey-Login - userkeys.php/addKey.php: $_GET["id"] als int statt ungequotet in SQL Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+4
-3
@@ -16,7 +16,8 @@ if($settings == "valid")
|
||||
if(!@mysqli_select_db($dbconn,$mysql_db))
|
||||
$err = error("Datenbank nicht gefunden!! ($mysql_db)");
|
||||
}
|
||||
if($_SESSION["login"] == "valid" && isset($_GET["id"])){
|
||||
// Wie sites/userkeys.php: nur Superadmins dürfen Passkeys vergeben
|
||||
if($_SESSION["login"] == "valid" && isset($_GET["id"]) && ((int)substr($_SESSION["rights"], RIGHTS_SUPERADMIN, 1) & RIGHTS_CHANGE)){
|
||||
if(!mysqli_query($dbconn,"DELETE FROM addKey WHERE datetime < DATE_SUB(NOW(), INTERVAL 1 MINUTE);")){
|
||||
echo mysqli_error($dbconn);
|
||||
}
|
||||
@@ -25,8 +26,8 @@ if($_SESSION["login"] == "valid" && isset($_GET["id"])){
|
||||
if(!mysqli_query($dbconn,"INSERT INTO addKey SET accesskey=".$accessKey.", datetime=NOW();")){
|
||||
echo mysqli_error($dbconn);
|
||||
}
|
||||
header('Location: https://wm.el-wa.org/kunden?action=userkeys&id='.$_GET["id"].'&addKey='.$accessKey);
|
||||
echo 'https://wm.el-wa.org/kunden?action=userkeys&id='.$_GET["id"].'&addKey='.$accessKey;
|
||||
header('Location: https://wm.el-wa.org/kunden?action=userkeys&id='.(int)$_GET["id"].'&addKey='.$accessKey);
|
||||
echo 'https://wm.el-wa.org/kunden?action=userkeys&id='.(int)$_GET["id"].'&addKey='.$accessKey;
|
||||
}else{
|
||||
echo "Keine Berechtigung.";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user