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>
37 lines
1.3 KiB
PHP
37 lines
1.3 KiB
PHP
<?php
|
|
require_once("incs/constants.php");
|
|
session_name(SESSION_NAME);
|
|
session_start();
|
|
require_once("incs/authHelper.php");
|
|
require_once("incs/settings.php");
|
|
|
|
$settings=readsettings();
|
|
if($settings != "valid")
|
|
$action = "setup";
|
|
|
|
if($settings == "valid")
|
|
{
|
|
if(!$dbconn = @mysqli_connect($mysql_server, $mysql_user, $mysql_pw))
|
|
$err = error("Verbindung zur Datenbank fehlgeschlagen!!");
|
|
if(!@mysqli_select_db($dbconn,$mysql_db))
|
|
$err = error("Datenbank nicht gefunden!! ($mysql_db)");
|
|
}
|
|
// 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);
|
|
}
|
|
if(isLocal()){
|
|
$accessKey = strval(random_int(0,99999999));
|
|
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='.(int)$_GET["id"].'&addKey='.$accessKey);
|
|
echo 'https://wm.el-wa.org/kunden?action=userkeys&id='.(int)$_GET["id"].'&addKey='.$accessKey;
|
|
}else{
|
|
echo "Keine Berechtigung.";
|
|
}
|
|
}else{
|
|
echo "no login";
|
|
}
|
|
?>
|