Login und Passkeys auf Prepared Statements umgebaut
- sites/start.php: ein Query statt zwei, Passwortvergleich per hash_equals in PHP statt im SQL, Updates per id. Die Eingaben gehen nicht mehr durch htmlspecialchars(): Passwoerter werden beim Anlegen roh gehasht, mit & < > " ' konnte man sich deshalb bisher nie anmelden. - getUserSetting/updateUserSetting mit Platzhaltern; behoben: INSERT-Zweig rief mysqli_real_escape_string ohne Verbindung auf (Fatal Error), $mysqli_error als Variable, ungewolltes echo "update". Aufrufer escapen nicht mehr vor (sonst doppelt), settings.php: Tippfehler mysqi_real_escape_string beim Speichern von show_sks behoben, style nur als Dateiname ohne Pfad. - authServer.php, addKey.php, userkeys.php, checkAdduser(): Platzhalter. Passkey-INSERT setzt lastAuth/authKey (Pflichtfelder im strikten Modus). addKey nur als reine Ziffern, sonst passte "12345678xyz" per Typumwandlung. - checkLogin() entfernt: nirgends aufgerufen, fragte die nicht existierende Tabelle users ab. - userkeys.tpl: Passkey-Name escaped. Getestet gegen die migrierte Testdatenbank im strikten Modus. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+2
-6
@@ -16,14 +16,10 @@ if($settings == "valid")
|
||||
}
|
||||
// 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);
|
||||
}
|
||||
db_abfrage($dbconn, "DELETE FROM addKey WHERE datetime < DATE_SUB(NOW(), INTERVAL 1 MINUTE)") or print(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);
|
||||
}
|
||||
db_abfrage($dbconn, "INSERT INTO addKey SET accesskey = ?, datetime = NOW()", array($accessKey)) or print(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{
|
||||
|
||||
Reference in New Issue
Block a user