From c59e7fb3935e544714ac0db9934f626425ef7a57 Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Thu, 17 Sep 2026 10:30:30 +0200 Subject: [PATCH] Sicherheit: AJAX-Endpunkte und Statistik nur mit Anmeldung Keiner der AJAX-Endpunkte hat einen Login geprueft. Ohne Anmeldung liessen sich Kunden, Adressen und Rechnungen durchsuchen, und ajax/autosave.php setzt $_POST ungeprueft in SQL (SQL-Injection ohne Login). - incs/connectmysql.php und ajax/auto/connectmysql.php, die alle AJAX-Endpunkte laden, antworten ohne gueltige Session mit 403 - stats.php verlangt eine Anmeldung - db-backup.php und clean_db.php laufen nur noch per Kommandozeile; ueber den Webserver konnte jeder einen Datenbank-Dump anstossen Co-Authored-By: Claude Opus 5 --- ajax/auto/connectmysql.php | 6 ++++++ clean_db.php | 3 +++ db-backup.php | 3 +++ incs/connectmysql.php | 6 ++++++ stats.php | 8 ++++++++ 5 files changed, 26 insertions(+) diff --git a/ajax/auto/connectmysql.php b/ajax/auto/connectmysql.php index 31db3dd..2963693 100644 --- a/ajax/auto/connectmysql.php +++ b/ajax/auto/connectmysql.php @@ -2,6 +2,12 @@ require_once("../../incs/constants.php"); session_name(SESSION_NAME); session_start(); +// Alle AJAX-Endpunkte laden diese Datei: ohne Anmeldung gibt es keine Daten. +if(($_SESSION["login"] ?? "") !== "valid") +{ + http_response_code(403); + exit("Nicht angemeldet."); +} require_once("../../incs/settings.php"); $settings=readsettings(); if($settings == "valid") diff --git a/clean_db.php b/clean_db.php index 26365ca..b7d4e95 100644 --- a/clean_db.php +++ b/clean_db.php @@ -1,4 +1,7 @@