Files
adminandClaude Opus 5 6306bfba17 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>
2026-09-17 10:24:17 +02:00

45 lines
1.2 KiB
PHP

<?php
include_once("constants.php");
require_once(__DIR__."/db.php");
function readsettings()
{
if(is_file(CONFIG_PATH.CONFIG_FILE))
{
include(CONFIG_PATH.CONFIG_FILE);
if(isset($mysql_server) && isset($mysql_pw) && isset($mysql_db) && isset($mysql_user))
$ret = "valid";
else
$ret = -1;
}
else
$ret = -1;
return $ret;
}
/*
* Benutzereinstellungen. Werte und ids roh übergeben - nicht escapen, das
* erledigen die Platzhalter.
*/
function getUserSetting($dbconn,$setting, $user, $default = 0)
{
$wert = db_wert($dbconn, "SELECT val FROM setting WHERE opt = ? AND user_id = ?", array($setting, $user));
if($wert === false)
die(mysqli_error($dbconn));
return $wert === null ? $default : $wert;
}
function updateUserSetting($dbconn,$setting, $value, $user)
{
$id = db_wert($dbconn, "SELECT id FROM setting WHERE opt = ? AND user_id = ?", array($setting, $user));
if($id === false)
die(mysqli_error($dbconn));
if($id !== null)
db_abfrage($dbconn, "UPDATE setting SET val = ? WHERE id = ?", array($value, $id)) or die(mysqli_error($dbconn));
else
db_abfrage($dbconn, "INSERT INTO setting SET val = ?, user_id = ?, opt = ?", array($value, $user, $setting)) or die(mysqli_error($dbconn));
}
?>