- 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>
45 lines
1.2 KiB
PHP
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));
|
|
}
|
|
|
|
|
|
?>
|